From a846a8477738dd4c2edc6fbb08dfc0c144bb8253 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Sat, 26 Jul 2025 00:41:25 +0200 Subject: [PATCH] Fix download conversion change detection The setting was considered to have always been modified. This resulted in the save button never being disabled. --- .../components/DownloadConversionSetting.tsx | 28 +++++++++++++------ .../downloads/screens/DownloadSettings.tsx | 9 +++--- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/modules/downloads/components/DownloadConversionSetting.tsx b/src/modules/downloads/components/DownloadConversionSetting.tsx index 42332341..25c5cfcf 100644 --- a/src/modules/downloads/components/DownloadConversionSetting.tsx +++ b/src/modules/downloads/components/DownloadConversionSetting.tsx @@ -74,6 +74,7 @@ const maybeAddDefault = (conversions: SettingsDownloadConversion[]) => { { mimeType: DEFAULT_MIME_TYPE, target: '', + compressionLevel: null, }, ]), ...conversions, @@ -247,7 +248,7 @@ export const DownloadConversionSetting = ({ updateSetting, }: { conversions: SettingsDownloadConversion[]; - updateSetting: (conversions: SettingsDownloadConversion[]) => void; + updateSetting: (conversions: SettingsDownloadConversion[]) => Promise; }) => { const { t } = useTranslation(); @@ -257,13 +258,17 @@ export const DownloadConversionSetting = ({ const hasInvalidConversion = containsInvalidConversion(tmpConversions); - const hasChanged = didUpdateConversions(conversions, tmpConversions); + const hasChanged = didUpdateConversions(normalizeConversions(maybeAddDefault(conversions)), tmpConversions); - const onClose = () => { - setTmpConversions(normalizeConversions(maybeAddDefault(conversions))); + const onClose = (newConversions: SettingsDownloadConversion[] = conversions) => { + setTmpConversions(normalizeConversions(maybeAddDefault(newConversions))); setIsDialogOpen(false); }; + const onCancel = () => { + onClose(conversions); + }; + return ( <> setIsDialogOpen(true)}> @@ -275,7 +280,7 @@ export const DownloadConversionSetting = ({ secondaryTypographyProps={{ style: { display: 'flex', flexDirection: 'column' } }} /> - + {t('download.settings.conversion.title')} @@ -322,16 +327,23 @@ export const DownloadConversionSetting = ({ - + diff --git a/src/modules/downloads/screens/DownloadSettings.tsx b/src/modules/downloads/screens/DownloadSettings.tsx index b48c6323..89728fc6 100644 --- a/src/modules/downloads/screens/DownloadSettings.tsx +++ b/src/modules/downloads/screens/DownloadSettings.tsx @@ -108,10 +108,11 @@ export const DownloadSettings = () => { const updateSetting = ( setting: Setting, value: DownloadSettingsType[Setting], - ) => { - mutateSettings({ variables: { input: { settings: { [setting]: value } } } }).catch((e) => - makeToast(t('global.error.label.failed_to_save_changes'), 'error', getErrorMessage(e)), - ); + ): Promise => { + const mutation = mutateSettings({ variables: { input: { settings: { [setting]: value } } } }); + mutation.catch((e) => makeToast(t('global.error.label.failed_to_save_changes'), 'error', getErrorMessage(e))); + + return mutation; }; const updateMetadataSetting = createUpdateMetadataServerSettings((e) =>