diff --git a/packages/web/src/components/AdminApplicationSettings/index.jsx b/packages/web/src/components/AdminApplicationSettings/index.jsx index a96569fe..3ffb66f1 100644 --- a/packages/web/src/components/AdminApplicationSettings/index.jsx +++ b/packages/web/src/components/AdminApplicationSettings/index.jsx @@ -13,6 +13,7 @@ import Form from 'components/Form'; import { Switch } from './style'; import useEnqueueSnackbar from 'hooks/useEnqueueSnackbar'; import useAdminCreateAppConfig from 'hooks/useAdminCreateAppConfig'; +import useAdminUpdateAppConfig from 'hooks/useAdminUpdateAppConfig'; function AdminApplicationSettings(props) { const formatMessage = useFormatMessage(); @@ -20,28 +21,18 @@ function AdminApplicationSettings(props) { const { data: appConfig, isLoading: loading } = useAppConfig(props.appKey); - const { - mutateAsync: createAppConfig, - isPending: isCreateAppConfigPending, - } = useAdminCreateAppConfig(props.appKey); + const { mutateAsync: createAppConfig, isPending: isCreateAppConfigPending } = + useAdminCreateAppConfig(props.appKey); - const [updateAppConfig, { loading: loadingUpdateAppConfig }] = useMutation( - UPDATE_APP_CONFIG, - { - refetchQueries: ['GetAppConfig'], - }, - ); + const { mutateAsync: updateAppConfig, isPending: isUpdateAppConfigPending } = + useAdminUpdateAppConfig(props.appKey); const handleSubmit = async (values) => { try { if (!appConfig?.data) { await createAppConfig(values); } else { - await updateAppConfig({ - variables: { - input: { id: appConfig.data.id, ...values }, - }, - }); + await updateAppConfig(values); } enqueueSnackbar(formatMessage('adminAppsSettings.successfullySaved'), { @@ -102,7 +93,7 @@ function AdminApplicationSettings(props) { variant="contained" color="primary" sx={{ boxShadow: 2, mt: 5 }} - loading={isCreateAppConfigPending || loadingUpdateAppConfig} + loading={isCreateAppConfigPending || isUpdateAppConfigPending} disabled={!isDirty || loading} > {formatMessage('adminAppsSettings.save')} diff --git a/packages/web/src/hooks/useAdminUpdateAppConfig.js b/packages/web/src/hooks/useAdminUpdateAppConfig.js new file mode 100644 index 00000000..87dd331c --- /dev/null +++ b/packages/web/src/hooks/useAdminUpdateAppConfig.js @@ -0,0 +1,24 @@ +import { useMutation, useQueryClient } from '@tanstack/react-query'; +import api from 'helpers/api'; + +export default function useAdminUpdateAppConfig(appKey) { + const queryClient = useQueryClient(); + + const query = useMutation({ + mutationFn: async (payload) => { + const { data } = await api.patch( + `/v1/admin/apps/${appKey}/config`, + payload, + ); + + return data; + }, + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: ['apps', appKey, 'config'], + }); + }, + }); + + return query; +}