import React, {memo, useEffect, useMemo, useState} from 'react' import {useMutation, useQueryClient} from "@tanstack/react-query"; import {pageSettings} from "../../../services/services"; import SiteTemplateSelector from './SiteTemplateSelector'; import NoYesBooleanDropdown from './NoYesBooleanDropdown'; import {IoMdArrowDropdown} from 'react-icons/io'; import queryKeys from '../../../services/queryKeys'; import sortObjectByListOrder from '../../../helpers/sortObjectByListOrder'; import URLConfiguration from "./URLConfiguration"; import ColorStyleConfigure from "./ColorStyleConfigure"; const GeneralTab = memo(({ name = 'Full Name', data, tabKey, isCustom, productData, backendValues, setFieldsChanged }) => { const queryClient = useQueryClient() const [reqStatus, setReqStatus] = useState({error: null, message: ''}) // const computeFieldData = useMemo(()=>{ // const fieldData = {} // Object.entries(data)?.forEach(([key, value]) => { // LOOP TO POPULATE FIELDDATA PROPERTIES WITH DATA OF EACH TAB // fieldData[value?.name?.toLowerCase().replaceAll(" ", "_")] = '' // }) // backendValues?.data?.forEach(item => { //LOOPING THROUGH USER ALREADY ADDED DATA FROM BACKEND IF ANY AND UPDATING THE FIELDDATA OBJECT // fieldData[item?.setting_key?.toLowerCase().replaceAll(" ", "_")] = item?.setting_value // }) // return fieldData // },[backendValues.data]) const [fields, setFields] = useState({}) const sortedData = sortObjectByListOrder(data ? data : {}) // SORTED SETTINGSCONFIG useEffect(() => { const fieldData = {} Object.entries(sortedData)?.forEach(([key, value]) => { // LOOP TO POPULATE FIELDDATA PROPERTIES WITH DATA OF EACH TAB fieldData[value?.name?.toLowerCase().replaceAll(" ", "_")] = '' }) backendValues?.data?.forEach(item => { //LOOPING THROUGH USER ALREADY ADDED DATA FROM BACKEND IF ANY AND UPDATING THE FIELDDATA OBJECT fieldData[item?.setting_key?.toLowerCase().replaceAll(" ", "_")] = item?.setting_value }) setFields(fieldData) }, [backendValues.data]) const handleChange = ({target: {name, value}}) => { setFields(prev => ({...prev, [name]: value})) setFieldsChanged(true) } const submitSettings = useMutation({ mutationFn: (fields) => { return pageSettings(fields) }, onSuccess: (res) => { if (res?.data?.resultCode != '0') { return setReqStatus({error: true, message: 'Unable to complete, try again later'}) } setFieldsChanged(false) setReqStatus({error: false, message: 'Completed successfully'}) }, onError: (err) => { setReqStatus({error: true, message: 'Unable to complete, try again later'}) }, onSettled: () => { queryClient.refetchQueries({ // refetches productProvision API call queryKey: [...queryKeys.settingsData], }) setTimeout(() => { setReqStatus({error: null, message: ''}) }, 3000) }, }) const handleSubmit = () => { const reqData = { token: localStorage.getItem('token'), // USER TOKEN uid: localStorage.getItem('uid'), // USER UID product_id: productData?.product_id, settings: { ...fields } } submitSettings.mutate(reqData) } console.log(tabKey); return ( <> {backendValues?.isFetching || !backendValues?.data ? <>

Loading...

: backendValues?.isError ?

{backendValues?.error.message}

: <> {isCustom === true ? <> {(tabKey === 'template_tab') && } {(tabKey === 'url_config_tab') && } {(tabKey === 'color_scheme_tab') && } :
<> {Object.entries(sortedData)?.map(([key, value]) => { let fieldName = key; // value.key.toLowerCase().replaceAll(" ", "_") let fieldValue = fields[key]; //fields[value.name.toLowerCase().replaceAll(" ", "_")] return (
{value.controls === 'TEXT' ? : value.controls === 'TEXTAREA' ?