From 713326d1a21762d02cd4eff11d05d2fcbab38578 Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Wed, 18 Dec 2024 01:04:02 +0100 Subject: [PATCH] Delete global reader settings on reset When resetting a whole settings tab, the whole metadata can be deleted from the server --- .../settings/ReaderSettingsTabs.tsx | 34 ++++++++----------- .../behaviour/ReaderBehaviourSettings.tsx | 7 ++-- .../settings/filters/ReaderFilterSettings.tsx | 12 +++---- .../general/ReaderGeneralSettings.tsx | 2 ++ .../general/ReaderSettingProgressBarSize.tsx | 4 ++- .../hotkeys/ReaderHotkeysSettings.tsx | 9 ++--- .../reader/screens/GlobalReaderSettings.tsx | 1 + 7 files changed, 33 insertions(+), 36 deletions(-) diff --git a/src/modules/reader/components/settings/ReaderSettingsTabs.tsx b/src/modules/reader/components/settings/ReaderSettingsTabs.tsx index 974e0b2b..6bf37828 100644 --- a/src/modules/reader/components/settings/ReaderSettingsTabs.tsx +++ b/src/modules/reader/components/settings/ReaderSettingsTabs.tsx @@ -24,25 +24,6 @@ import { ReaderBehaviourSettings } from '@/modules/reader/components/settings/be import { ReaderDefaultLayoutSettings } from '@/modules/reader/components/settings/layout/ReaderDefaultLayoutSettings.tsx'; import { ReaderHotkeysSettings } from '@/modules/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx'; -interface BaseProps { - activeTab: number; - setActiveTab: (tab: number) => void; - settings: IReaderSettingsWithDefaultFlag; - updateSetting: (...args: OmitFirst>) => void; -} - -interface DefaultSettingsProps extends BaseProps { - areDefaultSettings: true; -} - -interface MangaSettingsProps extends BaseProps { - deleteSetting: (setting: keyof IReaderSettings) => void; -} - -type Props = - | (DefaultSettingsProps & PropertiesNever>) - | (PropertiesNever> & MangaSettingsProps); - export const ReaderSettingsTabs = ({ activeTab, setActiveTab, @@ -50,7 +31,14 @@ export const ReaderSettingsTabs = ({ settings, updateSetting, deleteSetting, -}: Props) => { +}: { + activeTab: number; + setActiveTab: (tab: number) => void; + settings: IReaderSettingsWithDefaultFlag; + updateSetting: (...args: OmitFirst>) => void; + areDefaultSettings?: boolean; + deleteSetting: (setting: keyof IReaderSettings) => void; +}) => { const { t } = useTranslation(); const { setShowPreview } = useReaderTapZoneContext(); const isTouchDevice = MediaQuery.useIsTouchDevice(); @@ -144,6 +132,8 @@ export const ReaderSettingsTabs = ({ updateSetting(...args)} + isDefaultable + onDefault={(...args) => deleteSetting?.(...args)} /> ); @@ -158,6 +148,8 @@ export const ReaderSettingsTabs = ({ updateSetting(...args)} + isDefaultable + onDefault={(...args) => deleteSetting?.(...args)} /> ); @@ -172,6 +164,8 @@ export const ReaderSettingsTabs = ({ updateSetting(...args)} + isDefaultable + onDefault={(...args) => deleteSetting?.(...args)} /> ); diff --git a/src/modules/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx b/src/modules/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx index ed75f8d1..867fba41 100644 --- a/src/modules/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx +++ b/src/modules/reader/components/settings/behaviour/ReaderBehaviourSettings.tsx @@ -9,7 +9,7 @@ import Stack from '@mui/material/Stack'; import { useTranslation } from 'react-i18next'; import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { IReaderSettingsWithDefaultFlag } from '@/modules/reader/types/Reader.types.ts'; +import { IReaderSettingsWithDefaultFlag, ReaderSettingsTypeProps } from '@/modules/reader/types/Reader.types.ts'; import { CheckboxInput } from '@/modules/core/components/inputs/CheckboxInput.tsx'; import { ReaderSettingExitMode } from '@/modules/reader/components/settings/behaviour/ReaderSettingExitMode.tsx'; import { isOffsetDoubleSpreadPagesEditable } from '@/modules/reader/utils/ReaderSettings.utils.tsx'; @@ -19,12 +19,13 @@ import { DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettin export const ReaderBehaviourSettings = ({ settings, updateSetting, + onDefault, }: { settings: IReaderSettingsWithDefaultFlag; updateSetting: ( ...args: OmitFirst> ) => ReturnType; -}) => { +} & ReaderSettingsTypeProps) => { const { t } = useTranslation(); return ( @@ -48,7 +49,7 @@ export const ReaderBehaviourSettings = ({ updateSetting('imagePreLoadAmount', DEFAULT_READER_SETTINGS.imagePreLoadAmount, true)} + onDefault={() => onDefault?.('imagePreLoadAmount')} slotProps={{ slider: { defaultValue: DEFAULT_READER_SETTINGS.imagePreLoadAmount, diff --git a/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx b/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx index 7e5b374e..755eafc1 100644 --- a/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx +++ b/src/modules/reader/components/settings/filters/ReaderFilterSettings.tsx @@ -17,9 +17,12 @@ import { ReaderSettingGrayscale } from '@/modules/reader/components/settings/fil import { ReaderSettingInvert } from '@/modules/reader/components/settings/filters/ReaderSettingInvert.tsx'; import { ReaderSettingsTypeProps } from '@/modules/reader/types/Reader.types.ts'; import { ResetButton } from '@/modules/core/components/buttons/ResetButton.tsx'; -import { DEFAULT_READER_SETTINGS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; -export const ReaderFilterSettings = ({ settings: { customFilter }, updateSetting }: ReaderSettingsTypeProps) => ( +export const ReaderFilterSettings = ({ + settings: { customFilter }, + updateSetting, + onDefault, +}: ReaderSettingsTypeProps) => ( - updateSetting('customFilter', DEFAULT_READER_SETTINGS.customFilter)} - variant="outlined" - /> + onDefault?.('customFilter')} variant="outlined" /> ); diff --git a/src/modules/reader/components/settings/general/ReaderGeneralSettings.tsx b/src/modules/reader/components/settings/general/ReaderGeneralSettings.tsx index ba7d6f4c..4a248df9 100644 --- a/src/modules/reader/components/settings/general/ReaderGeneralSettings.tsx +++ b/src/modules/reader/components/settings/general/ReaderGeneralSettings.tsx @@ -25,6 +25,7 @@ export const ReaderGeneralSettings = ({ overlayMode, settings, updateSetting, + onDefault, }: Pick & ReaderSettingsTypeProps) => { const { t } = useTranslation(); @@ -48,6 +49,7 @@ export const ReaderGeneralSettings = ({ progressBarType={settings.progressBarType} progressBarSize={settings.progressBarSize} setProgressBarSize={(...args) => updateSetting('progressBarSize', ...args)} + onDefault={() => onDefault?.('progressBarSize')} /> & { setProgressBarSize: (size: number, commit: boolean) => void; + onDefault: () => void; }) => { const { t } = useTranslation(); const isChangeable = overlayMode === ReaderOverlayMode.DESKTOP && progressBarType === ProgressBarType.STANDARD; @@ -30,7 +32,7 @@ export const ReaderSettingProgressBarSize = ({ setProgressBarSize(DEFAULT_READER_SETTINGS.progressBarSize, true)} + onDefault={onDefault} slotProps={{ slider: { defaultValue: DEFAULT_READER_SETTINGS.progressBarSize, diff --git a/src/modules/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx b/src/modules/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx index bbd13f87..f5fe813c 100644 --- a/src/modules/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx +++ b/src/modules/reader/components/settings/hotkeys/ReaderHotkeysSettings.tsx @@ -11,10 +11,10 @@ import { useTranslation } from 'react-i18next'; import Typography from '@mui/material/Typography'; import { ReaderSettingsTypeProps } from '@/modules/reader/types/Reader.types.ts'; import { ReaderSettingHotkey } from '@/modules/reader/components/settings/hotkeys/ReaderSettingHotkey.tsx'; -import { DEFAULT_READER_SETTINGS, READER_HOTKEYS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; +import { READER_HOTKEYS } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; import { ResetButton } from '@/modules/core/components/buttons/ResetButton.tsx'; -export const ReaderHotkeysSettings = ({ settings, updateSetting }: ReaderSettingsTypeProps) => { +export const ReaderHotkeysSettings = ({ settings, updateSetting, onDefault }: ReaderSettingsTypeProps) => { const { t } = useTranslation(); return ( @@ -32,10 +32,7 @@ export const ReaderHotkeysSettings = ({ settings, updateSetting }: ReaderSetting /> ))} - updateSetting('hotkeys', DEFAULT_READER_SETTINGS.hotkeys)} - variant="outlined" - /> + onDefault?.('hotkeys')} variant="outlined" /> ); diff --git a/src/modules/reader/screens/GlobalReaderSettings.tsx b/src/modules/reader/screens/GlobalReaderSettings.tsx index bd0e98da..4b7e64e1 100644 --- a/src/modules/reader/screens/GlobalReaderSettings.tsx +++ b/src/modules/reader/screens/GlobalReaderSettings.tsx @@ -68,6 +68,7 @@ export const GlobalReaderSettings = () => { areDefaultSettings settings={settings} updateSetting={(setting, value, commit, _, profile) => updateSetting(setting, value, commit, profile)} + deleteSetting={(setting) => ReaderService.deleteSetting({ id: -1 }, setting, true)} /> ); };