import { AdaptableCard } from '@/components/shared' import Container from '@/components/shared/Container' import { Button, Card, Checkbox, FormContainer, FormItem, Input, Menu, Select, Tooltip, toast, } from '@/components/ui' import Notification from '@/components/ui/Notification' import { APP_NAME } from '@/constants/app.constant' import { MainGroupedSettingDto } from '@/proxy/settings/models' import { getList, updateSettingValues } from '@/services/setting-ui.service' import { useStoreActions, useStoreState } from '@/store' import { SelectBoxOption } from '@/types/shared' import { useLocalization } from '@/utils/hooks/useLocalization' import { Field, FieldProps, Form, Formik } from 'formik' import isEmpty from 'lodash/isEmpty' import { useEffect, useMemo, useState } from 'react' import { Helmet } from 'react-helmet' import { FaQuestionCircle } from 'react-icons/fa' function getOptions(selectOptions?: Record) { const options: SelectBoxOption[] = [] if (!selectOptions) { return options } Object.entries(selectOptions).forEach(([key, value]) => options.push({ value: key, label: value, }), ) return options } const Settings = () => { const { translate } = useLocalization() const [list, setList] = useState([]) const [mainGroups, setMainGroups] = useState([]) const [activeMainGroupKey, setActiveMainGroupKey] = useState() const activeMainGroup = useMemo( () => list.find((a) => a.groupName === activeMainGroupKey), [activeMainGroupKey, list], ) const { getConfig } = useStoreActions((a) => a.abpConfig) const { setMode } = useStoreActions((actions) => actions.theme) const onFormSubmit = async ( values: Record, setSubmitting: (isSubmitting: boolean) => void, activeGroupName?: string, ) => { //Dark Mode verildimi ? if (values.App_SiteManagement_Theme_Style) { setMode( values.App_SiteManagement_Theme_Style.includes('.dark') ? 'dark' : 'light', ) } console.log(values) const resp = await updateSettingValues(values) if (resp.status === 204) { await fetchData(activeGroupName) toast.push( , { placement: 'top-end', }, ) } else { toast.push(, { placement: 'top-end', }) } //getConfig değiştiriliyor. getConfig(false) setSubmitting(false) } const mode = useStoreState((state) => state.theme.mode) const fetchData = async (activeGroupName?: string) => { const result = await getList() if (result.data) { setList(result.data) if (activeGroupName) { setActiveMainGroupKey(activeGroupName) } else { setActiveMainGroupKey(result.data.length ? result.data[0].groupName : '') } setMainGroups(result.data.map((a) => a.groupName)) } } useEffect(() => { if (isEmpty(list)) { fetchData() } // eslint-disable-next-line react-hooks/exhaustive-deps }, []) return (
{mainGroups.map((group) => ( setActiveMainGroupKey(group)} > {translate('::' + group)} ))}
{activeMainGroup?.subGroups.map((subGroup) => ( { if (!cur.code) { return acc } if (cur.dataType === 'Bool') { acc[cur.code] = cur.valueBool } else { acc[cur.code] = cur.value } return acc }, {})} onSubmit={(values, { setSubmitting }) => { setSubmitting(true) setTimeout(() => { onFormSubmit(values, setSubmitting, activeMainGroupKey) }, 1000) }} > {({ values, touched, errors, isSubmitting }) => (
{subGroup.settings.map((setting) => ( } > <> {setting.dataType === 'Text' && ( )} {setting.dataType === 'Number' && ( )} {setting.dataType === 'Memo' && ( )} {setting.dataType === 'Bool' && ( )} {setting.dataType === 'List' && ( {({ field, form }: FieldProps) => (