import * as React from 'react'; import { useMutation } from '@apollo/client'; import Grid from '@mui/material/Grid'; import Stack from '@mui/material/Stack'; import LoadingButton from '@mui/lab/LoadingButton'; import { useSnackbar } from 'notistack'; import { UPDATE_CONFIG } from 'graphql/mutations/update-config.ee'; import useConfig from 'hooks/useConfig'; import PageTitle from 'components/PageTitle'; import Container from 'components/Container'; import Form from 'components/Form'; import TextField from 'components/TextField'; import useFormatMessage from 'hooks/useFormatMessage'; import ColorInput from 'components/ColorInput'; import nestObject from 'helpers/nestObject'; import { Skeleton } from '@mui/material'; type UserInterface = { palette: { primary: { dark: string; light: string; main: string; }; }; logo: { svgData: string; }; }; export default function UserInterface(): React.ReactElement { const formatMessage = useFormatMessage(); const [updateConfig, { loading }] = useMutation(UPDATE_CONFIG, { refetchQueries: ['GetConfig'], }); const { config, loading: configLoading } = useConfig([ 'palette.primary.main', 'palette.primary.light', 'palette.primary.dark', 'logo.svgData', ]); const { enqueueSnackbar } = useSnackbar(); const handleUserInterfaceUpdate = async (uiData: Partial) => { try { await updateConfig({ variables: { input: { 'palette.primary.main': uiData?.palette?.primary.main, 'palette.primary.dark': uiData?.palette?.primary.dark, 'palette.primary.light': uiData?.palette?.primary.light, 'logo.svgData': uiData?.logo?.svgData, }, }, }); enqueueSnackbar(formatMessage('userInterfacePage.successfullyUpdated'), { variant: 'success', }); } catch (error) { throw new Error('Failed while updating!'); } }; return ( {formatMessage('userInterfacePage.title')} {configLoading && ( )} {!configLoading && (
(config)} > {formatMessage('userInterfacePage.submit')}
)}
); }