From cfd5b78488348ae058352b7f7059010b9d34c2bb Mon Sep 17 00:00:00 2001 From: schroda <50052685+schroda@users.noreply.github.com> Date: Thu, 26 Dec 2024 02:47:37 +0100 Subject: [PATCH] Fix unchangeable global reader settings Regression 72809309e15b4866a431fa8ee1a846b98095a343 --- src/modules/manga/Manga.constants.ts | 6 +++++- src/modules/reader/components/ReaderHotkeys.tsx | 8 +++----- .../overlay/navigation/desktop/ReaderNavBarDesktop.tsx | 5 ++--- .../quick-settings/ReaderNavBarDesktopQuickSettings.tsx | 7 +++---- .../mobile/ReaderBottomBarMobileQuickSettings.tsx | 5 ++--- src/modules/reader/screens/GlobalReaderSettings.tsx | 5 +++-- src/modules/reader/screens/Reader.tsx | 3 ++- src/modules/reader/services/ReaderService.ts | 5 +++-- 8 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/modules/manga/Manga.constants.ts b/src/modules/manga/Manga.constants.ts index 43554c68..1c96d917 100644 --- a/src/modules/manga/Manga.constants.ts +++ b/src/modules/manga/Manga.constants.ts @@ -8,7 +8,11 @@ import { MangaStatus } from '@/lib/graphql/generated/graphql.ts'; import { TranslationKey } from '@/Base.types.ts'; -import { MangaAction } from '@/modules/manga/Manga.types.ts'; +import { MangaAction, MangaIdInfo } from '@/modules/manga/Manga.types.ts'; + +export const FALLBACK_MANGA: MangaIdInfo = { id: -1 }; + +export const GLOBAL_READER_SETTINGS_MANGA: MangaIdInfo = { id: -2 }; export const MANGA_COVER_ASPECT_RATIO = '1 / 1.5'; diff --git a/src/modules/reader/components/ReaderHotkeys.tsx b/src/modules/reader/components/ReaderHotkeys.tsx index a60d9e96..c90ec07c 100644 --- a/src/modules/reader/components/ReaderHotkeys.tsx +++ b/src/modules/reader/components/ReaderHotkeys.tsx @@ -21,11 +21,11 @@ import { READING_MODE_VALUES, } from '@/modules/reader/constants/ReaderSettings.constants.tsx'; import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; import { HotkeyScope } from '@/modules/hotkeys/Hotkeys.types.ts'; import { ReaderControls } from '@/modules/reader/services/ReaderControls.ts'; import { ScrollDirection, ScrollOffset } from '@/modules/core/Core.types.ts'; import { getOptionForDirection } from '@/modules/theme/services/ThemeCreator.ts'; +import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; const useHotkeys = (...args: Parameters): ReturnType => { const [keys, callback, options, dependencies] = args; @@ -57,8 +57,6 @@ const updateSettingCycleThrough = ( updateSetting(setting, nextValue); }; -const DEFAULT_MANGA: MangaIdInfo = { id: -1 }; - const CONTINUOUS_READING_MODE_TO_SCROLL_DIRECTION: Record = { [ReadingMode.SINGLE_PAGE]: ScrollDirection.Y, [ReadingMode.DOUBLE_PAGE]: ScrollDirection.Y, @@ -83,8 +81,8 @@ export const ReaderHotkeys = ({ const openChapter = ReaderControls.useOpenChapter(); const openPage = ReaderControls.useOpenPage(); - const updateSetting = ReaderService.useCreateUpdateSetting(manga ?? DEFAULT_MANGA); - const deleteSetting = ReaderService.useCreateDeleteSetting(manga ?? DEFAULT_MANGA); + const updateSetting = ReaderService.useCreateUpdateSetting(manga ?? FALLBACK_MANGA); + const deleteSetting = ReaderService.useCreateDeleteSetting(manga ?? FALLBACK_MANGA); useHotkeys(hotkeys[ReaderHotkey.PREVIOUS_PAGE], () => openPage('previous'), [openPage]); useHotkeys(hotkeys[ReaderHotkey.NEXT_PAGE], () => openPage('next'), [openPage]); diff --git a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx b/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx index 01129a7e..81100180 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx +++ b/src/modules/reader/components/overlay/navigation/desktop/ReaderNavBarDesktop.tsx @@ -31,10 +31,10 @@ import { userReaderStatePagesContext } from '@/modules/reader/contexts/state/Rea import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; import { LoadingPlaceholder } from '@/modules/core/components/placeholder/LoadingPlaceholder.tsx'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; import { NavbarContextType } from '@/modules/navigation-bar/NavigationBar.types.ts'; import { IReaderSettings, ReaderStateChapters, TReaderStateMangaContext } from '@/modules/reader/types/Reader.types.ts'; import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; +import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; const useGetPreviousNavBarStaticValue = (isVisible: boolean, isStaticNav: boolean) => { const wasNavBarStaticRef = useRef(isStaticNav); @@ -54,7 +54,6 @@ const useGetPreviousNavBarStaticValue = (isVisible: boolean, isStaticNav: boolea return wasNavBarStaticRef.current; }; -const DEFAULT_MANGA: MangaIdInfo = { id: -1 }; const BaseReaderNavBarDesktop = ({ isVisible, openSettings, @@ -77,7 +76,7 @@ const BaseReaderNavBarDesktop = ({ const getOptionForDirection = useGetOptionForDirection(); - const updateReaderSettings = ReaderService.useCreateUpdateSetting(manga ?? DEFAULT_MANGA); + const updateReaderSettings = ReaderService.useCreateUpdateSetting(manga ?? FALLBACK_MANGA); const [navBarElement, setNavBarElement] = useState(); useResizeObserver( diff --git a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx b/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx index 12873c85..8a4eb40d 100644 --- a/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx +++ b/src/modules/reader/components/overlay/navigation/desktop/quick-settings/ReaderNavBarDesktopQuickSettings.tsx @@ -17,11 +17,10 @@ import { ReaderNavBarDesktopReadingDirection } from '@/modules/reader/components import { IReaderSettingsWithDefaultFlag, TReaderStateMangaContext } from '@/modules/reader/types/Reader.types.ts'; import { ReaderNavBarDesktopProps } from '@/modules/reader/types/ReaderOverlay.types.ts'; import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; +import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; -const DEFAULT_MANGA: MangaIdInfo = { id: -1 }; const BaseReaderNavBarDesktopQuickSettings = ({ manga, readingMode, @@ -38,8 +37,8 @@ const BaseReaderNavBarDesktopQuickSettings = ({ >) => { const { t } = useTranslation(); - const updateSetting = ReaderService.useCreateUpdateSetting(manga ?? DEFAULT_MANGA); - const deleteSetting = ReaderService.useCreateDeleteSetting(manga ?? DEFAULT_MANGA); + const updateSetting = ReaderService.useCreateUpdateSetting(manga ?? FALLBACK_MANGA); + const deleteSetting = ReaderService.useCreateDeleteSetting(manga ?? FALLBACK_MANGA); return ( diff --git a/src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx b/src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx index bc807480..55186380 100644 --- a/src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx +++ b/src/modules/reader/components/overlay/navigation/mobile/ReaderBottomBarMobileQuickSettings.tsx @@ -12,19 +12,18 @@ import { ReaderSettingReadingMode } from '@/modules/reader/components/settings/l import { ReaderSettingReadingDirection } from '@/modules/reader/components/settings/layout/ReaderSettingReadingDirection.tsx'; import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; import { useReaderStateMangaContext } from '@/modules/reader/contexts/state/ReaderStateMangaContext.tsx'; -import { MangaIdInfo } from '@/modules/manga/Manga.types.ts'; import { DefaultSettingFootnote } from '@/modules/reader/components/settings/DefaultSettingFootnote.tsx'; import { IReaderSettingsWithDefaultFlag, TReaderStateMangaContext } from '@/modules/reader/types/Reader.types.ts'; import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; +import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; -const DEFAULT_MANGA: MangaIdInfo = { id: -1 }; const BaseReaderBottomBarMobileQuickSettings = ({ manga, readingMode, readingDirection, }: Pick & Pick) => { - const deleteSetting = ReaderService.useCreateDeleteSetting(manga ?? DEFAULT_MANGA); + const deleteSetting = ReaderService.useCreateDeleteSetting(manga ?? FALLBACK_MANGA); if (!manga) { return null; diff --git a/src/modules/reader/screens/GlobalReaderSettings.tsx b/src/modules/reader/screens/GlobalReaderSettings.tsx index 4b3b4e3d..ec23d5a8 100644 --- a/src/modules/reader/screens/GlobalReaderSettings.tsx +++ b/src/modules/reader/screens/GlobalReaderSettings.tsx @@ -17,6 +17,7 @@ import { IReaderSettings, ReadingMode } from '@/modules/reader/types/Reader.type import { ReaderService } from '@/modules/reader/services/ReaderService.ts'; import { ReaderSettingsTabs } from '@/modules/reader/components/settings/ReaderSettingsTabs.tsx'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; +import { GLOBAL_READER_SETTINGS_MANGA } from '@/modules/manga/Manga.constants.ts'; export const GlobalReaderSettings = () => { const { t } = useTranslation(); @@ -45,7 +46,7 @@ export const GlobalReaderSettings = () => { commit?: boolean, profile?: ReadingMode, ) => { - ReaderService.updateSetting({ id: -1 }, key, value, commit, true, profile); + ReaderService.updateSetting(GLOBAL_READER_SETTINGS_MANGA, key, value, commit, true, profile); }; if (loading) { @@ -69,7 +70,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)} + deleteSetting={(setting) => ReaderService.deleteSetting(GLOBAL_READER_SETTINGS_MANGA, setting, true)} /> ); }; diff --git a/src/modules/reader/screens/Reader.tsx b/src/modules/reader/screens/Reader.tsx index 854eaef2..b425930f 100644 --- a/src/modules/reader/screens/Reader.tsx +++ b/src/modules/reader/screens/Reader.tsx @@ -52,6 +52,7 @@ import { TReaderOverlayContext } from '@/modules/reader/types/ReaderOverlay.type import { ReaderStatePages } from '@/modules/reader/types/ReaderProgressBar.types.ts'; import { withPropsFrom } from '@/modules/core/hoc/withPropsFrom.tsx'; import { useReaderStateChaptersContext } from '@/modules/reader/contexts/state/ReaderStateChaptersContext.tsx'; +import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; const BaseReader = ({ setTitle, @@ -225,7 +226,7 @@ const BaseReader = ({ } const settingsWithDefaultProfileFallback = getReaderSettingsFor( - mangaResponse.data?.manga ?? { id: -1 }, + mangaResponse.data?.manga ?? FALLBACK_MANGA, defaultSettings, ); diff --git a/src/modules/reader/services/ReaderService.ts b/src/modules/reader/services/ReaderService.ts index 61c79d05..ff9c811b 100644 --- a/src/modules/reader/services/ReaderService.ts +++ b/src/modules/reader/services/ReaderService.ts @@ -50,6 +50,7 @@ import { defaultPromiseErrorHandler } from '@/lib/DefaultPromiseErrorHandler.ts' import { Queue } from '@/lib/Queue.ts'; import { AppRoutes } from '@/modules/core/AppRoute.constants.ts'; import { getErrorMessage } from '@/lib/HelperFunctions.ts'; +import { FALLBACK_MANGA } from '@/modules/manga/Manga.constants.ts'; const DIRECTION_TO_INVERTED: Record = { ltr: 'rtl', @@ -241,7 +242,7 @@ export class ReaderService { isGlobal: boolean = false, profile?: ReadingMode, ): void { - if (!manga || manga.id === -1) { + if (!manga || manga.id === FALLBACK_MANGA.id) { return; } const key = getMetadataKey(setting, profile !== undefined ? [profile?.toString()] : undefined); @@ -305,7 +306,7 @@ export class ReaderService { isGlobal: boolean = false, profile?: string, ): void { - if (!manga || manga.id === -1) { + if (!manga || manga.id === FALLBACK_MANGA.id) { return; }