diff --git a/frontend/src/pages/settings/SettingsPage.tsx b/frontend/src/pages/settings/SettingsPage.tsx index af77f6b1..d0c74f2e 100644 --- a/frontend/src/pages/settings/SettingsPage.tsx +++ b/frontend/src/pages/settings/SettingsPage.tsx @@ -29,6 +29,7 @@ import { setMessageInstance } from '@/utils/messageBus'; import { useTheme } from '@/hooks/useTheme'; import { useMediaQuery } from '@/hooks/useMediaQuery'; import { useAllSettings } from '@/api/queries/useAllSettings'; +import { AllSettingSchema } from '@/schemas/setting'; import AppSidebar from '@/components/AppSidebar'; import GeneralTab from './GeneralTab'; import SecurityTab from './SecurityTab'; @@ -148,6 +149,18 @@ export default function SettingsPage() { return url.toString(); } + async function onSave() { + const result = AllSettingSchema.safeParse(allSetting); + if (!result.success) { + const issue = result.error.issues[0]; + const fieldPath = issue?.path.join('.') ?? 'value'; + const msgKey = issue?.message ?? 'somethingWentWrong'; + messageApi.error(`${fieldPath}: ${t(msgKey, { defaultValue: msgKey })}`); + return; + } + await saveAll(); + } + function restartPanel() { modal.confirm({ title: t('pages.settings.restartPanel'), @@ -301,7 +314,7 @@ export default function SettingsPage() { -