From f5e0c6b384b9964a07b2b8507835a54c4bc1fbbe Mon Sep 17 00:00:00 2001 From: Nafees Nazik <84864519+G3root@users.noreply.github.com> Date: Tue, 20 Dec 2022 18:55:15 +0530 Subject: [PATCH] feat: disable update button unless any input value changed in general settings (#5686) * feat: disable update button unless any input value changed * fix: reset dirtyFields on success Co-authored-by: Peer Richelsen Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com> --- apps/web/pages/settings/my-account/general.tsx | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/apps/web/pages/settings/my-account/general.tsx b/apps/web/pages/settings/my-account/general.tsx index 0fdc405110..efc5c92bc4 100644 --- a/apps/web/pages/settings/my-account/general.tsx +++ b/apps/web/pages/settings/my-account/general.tsx @@ -70,6 +70,7 @@ const GeneralView = ({ localeProp, user }: GeneralViewProps) => { const mutation = trpc.viewer.updateProfile.useMutation({ onSuccess: () => { + reset(getValues()); showToast(t("settings_updated_successfully"), "success"); }, onError: () => { @@ -119,7 +120,12 @@ const GeneralView = ({ localeProp, user }: GeneralViewProps) => { }, }, }); - + const { + formState: { isDirty, isSubmitting }, + reset, + getValues, + } = formMethods; + const isDisabled = isSubmitting || !isDirty; return (
{ id="timezone" value={value} onChange={(event) => { - if (event) formMethods.setValue("timeZone", event.value); + if (event) formMethods.setValue("timeZone", event.value, { shouldDirty: true }); }} /> @@ -178,7 +184,7 @@ const GeneralView = ({ localeProp, user }: GeneralViewProps) => { value={value} options={timeFormatOptions} onChange={(event) => { - if (event) formMethods.setValue("timeFormat", { ...event }); + if (event) formMethods.setValue("timeFormat", { ...event }, { shouldDirty: true }); }} /> @@ -199,13 +205,13 @@ const GeneralView = ({ localeProp, user }: GeneralViewProps) => { value={value} options={weekStartOptions} onChange={(event) => { - if (event) formMethods.setValue("weekStart", { ...event }); + if (event) formMethods.setValue("weekStart", { ...event }, { shouldDirty: true }); }} /> )} /> -