diff --git a/src/features/reader/Reader.types.ts b/src/features/reader/Reader.types.ts index 65019ab9..08243380 100644 --- a/src/features/reader/Reader.types.ts +++ b/src/features/reader/Reader.types.ts @@ -206,7 +206,7 @@ export interface ReaderStateChapters { * E.g., in case read chapters are filtered out. This would then lead to the removal of the current chapter * after the end of the chapter is reached. */ - mangaChapters?: TChapterReader[]; + mangaChapters: TChapterReader[] | undefined; /** * Actual chapters that have been filtered * @@ -215,11 +215,11 @@ export interface ReaderStateChapters { * - Manga chapter list filters */ chapters: TChapterReader[]; - chapterForDuplicatesHandling?: TChapterReader | null; - initialChapter?: TChapterReader | null; - currentChapter?: TChapterReader | null; - nextChapter?: TChapterReader; - previousChapter?: TChapterReader; + chapterForDuplicatesHandling: TChapterReader | null | undefined; + initialChapter: TChapterReader | null | undefined; + currentChapter: TChapterReader | null | undefined; + nextChapter: TChapterReader | undefined; + previousChapter: TChapterReader | undefined; isCurrentChapterReady: boolean; /** * Based from the initial chapter index @@ -232,9 +232,8 @@ export interface ReaderStateChapters { isLeadingChapterPreloadMode: boolean; isTrailingChapterPreloadMode: boolean; scrollIntoView: boolean; - resumeMode?: ReaderResumeMode; + resumeMode: ReaderResumeMode | undefined; }; - setReaderStateChapters: React.Dispatch>>; } interface ReaderSettingsTypeBaseProps { diff --git a/src/features/reader/auto-scroll/ReaderAutoScrollStore.ts b/src/features/reader/auto-scroll/ReaderAutoScrollStore.ts index 1f30cd71..048ada79 100644 --- a/src/features/reader/auto-scroll/ReaderAutoScrollStore.ts +++ b/src/features/reader/auto-scroll/ReaderAutoScrollStore.ts @@ -27,7 +27,7 @@ export interface ReaderAutoScrollStoreSlice { invert: boolean; setInvert: (invert: boolean) => void; direction: ScrollOffset; - reset: () => void; + reset: () => ReaderAutoScrollStoreSlice; }; } @@ -63,10 +63,7 @@ export const createReaderAutoScrollStoreSlice = - set((draft) => { - draft.autoScroll = { ...get().autoScroll, ...DEFAULT_STATE }; - }), + reset: () => ({ autoScroll: { ...get().autoScroll, ...DEFAULT_STATE } }), setIsActive: (active) => set((draft) => { draft.autoScroll.isActive = active; diff --git a/src/features/reader/overlay/ReaderOverlayStore.ts b/src/features/reader/overlay/ReaderOverlayStore.ts index ab617a2f..0dec878a 100644 --- a/src/features/reader/overlay/ReaderOverlayStore.ts +++ b/src/features/reader/overlay/ReaderOverlayStore.ts @@ -12,7 +12,7 @@ export interface ReaderOverlayStoreSlice { overlay: { isVisible: boolean; setIsVisible: (visible: boolean) => void; - reset: () => void; + reset: () => ReaderOverlayStoreSlice; }; } @@ -29,6 +29,6 @@ export const createReaderOverlayStoreSlice = set((draft) => { draft.overlay.isVisible = visible; }), - reset: () => set(() => ({ overlay: { ...get().overlay, ...DEFAULT_STATE } })), + reset: () => ({ overlay: { ...get().overlay, ...DEFAULT_STATE } }), }, }); diff --git a/src/features/reader/overlay/progress-bar/ReaderProgressBarStore.tsx b/src/features/reader/overlay/progress-bar/ReaderProgressBarStore.tsx index 64402301..6a1b99fb 100644 --- a/src/features/reader/overlay/progress-bar/ReaderProgressBarStore.tsx +++ b/src/features/reader/overlay/progress-bar/ReaderProgressBarStore.tsx @@ -11,7 +11,7 @@ import { TReaderProgressBarContext } from '@/features/reader/overlay/progress-ba export interface ReaderProgressBarStoreSlice { progressBar: TReaderProgressBarContext & { - reset: () => void; + reset: () => ReaderProgressBarStoreSlice; }; } @@ -33,6 +33,6 @@ export const createReaderProgressBarStoreSlice = { draft.progressBar.isDragging = dragging; }), - reset: () => set(() => ({ progressBar: { ...get().progressBar, ...DEFAULT_STATE } })), + reset: () => ({ progressBar: { ...get().progressBar, ...DEFAULT_STATE } }), }, }); diff --git a/src/features/reader/stores/ReaderChaptersStore.ts b/src/features/reader/stores/ReaderChaptersStore.ts index 56727409..3796e802 100644 --- a/src/features/reader/stores/ReaderChaptersStore.ts +++ b/src/features/reader/stores/ReaderChaptersStore.ts @@ -11,13 +11,22 @@ import { ReaderStateChapters } from '@/features/reader/Reader.types.ts'; export interface ReaderChaptersStoreSlice { chapters: ReaderStateChapters & { - reset: () => void; + setReaderStateChapters: ( + state: ((state: ReaderStateChapters) => ReaderStateChapters) | ReaderStateChapters, + ) => void; + reset: () => ReaderChaptersStoreSlice; }; } export const READER_DEFAULT_CHAPTERS_STATE = { chapters: { + mangaChapters: undefined, chapters: [], + chapterForDuplicatesHandling: undefined, + initialChapter: undefined, + currentChapter: undefined, + nextChapter: undefined, + previousChapter: undefined, isCurrentChapterReady: false, visibleChapters: { leading: 0, @@ -39,7 +48,7 @@ export const createReaderChaptersStoreSlice = ({ chapters: { ...READER_DEFAULT_CHAPTERS_STATE.chapters, - reset: () => set(() => ({ chapters: { ...get().chapters, ...READER_DEFAULT_CHAPTERS_STATE.chapters } })), + reset: () => ({ chapters: { ...get().chapters, ...READER_DEFAULT_CHAPTERS_STATE.chapters } }), setReaderStateChapters: (state) => set((draft) => { if (typeof state === 'function') { diff --git a/src/features/reader/stores/ReaderPagesStore.ts b/src/features/reader/stores/ReaderPagesStore.ts index 5ba6240a..dcecd4be 100644 --- a/src/features/reader/stores/ReaderPagesStore.ts +++ b/src/features/reader/stores/ReaderPagesStore.ts @@ -12,7 +12,7 @@ import { requestManager } from '@/lib/requests/RequestManager.ts'; export interface ReaderPagesStoreSlice { pages: ReaderStatePages & { - reset: () => void; + reset: () => ReaderPagesStoreSlice; }; } @@ -52,7 +52,7 @@ export const createReaderPagesStoreSlice = ( ): ReaderPagesStoreSlice => ({ pages: { ...READER_DEFAULT_PAGES_STATE, - reset: () => set(() => ({ pages: { ...get().pages, ...READER_DEFAULT_PAGES_STATE } })), + reset: () => ({ pages: { ...get().pages, ...READER_DEFAULT_PAGES_STATE } }), setCurrentPageIndex: (index) => set((draft) => { draft.pages.currentPageIndex = index; diff --git a/src/features/reader/stores/ReaderStore.ts b/src/features/reader/stores/ReaderStore.ts index fa841086..94f4d52d 100644 --- a/src/features/reader/stores/ReaderStore.ts +++ b/src/features/reader/stores/ReaderStore.ts @@ -67,20 +67,24 @@ const readerStore = create()( immer((set, get, store) => ({ ...DEFAULT_STATE, reset: () => - set((draft) => { - draft.manga = DEFAULT_STATE.manga; - draft.scrollbar = { ...get().scrollbar, ...DEFAULT_STATE.scrollbar }; - get().overlay.reset(); - get().autoScroll.reset(); - get().pages.reset(); - get().chapters.reset(); - draft.settings = { + set(() => ({ + ...get(), + ...DEFAULT_STATE, + scrollbar: { + ...get().scrollbar, + ...DEFAULT_STATE.scrollbar, + }, + settings: { ...get().settings, ...DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG, - }; - get().progressBar.reset(); - get().tapZone.reset(); - }), + }, + ...get().overlay.reset(), + ...get().autoScroll.reset(), + ...get().pages.reset(), + ...get().chapters.reset(), + ...get().progressBar.reset(), + ...get().tapZone.reset(), + })), setManga: (manga) => set((draft) => { draft.manga = manga; diff --git a/src/features/reader/tap-zones/ReaderTapZoneStore.tsx b/src/features/reader/tap-zones/ReaderTapZoneStore.tsx index 359ccc2a..6d8e3dbf 100644 --- a/src/features/reader/tap-zones/ReaderTapZoneStore.tsx +++ b/src/features/reader/tap-zones/ReaderTapZoneStore.tsx @@ -11,7 +11,7 @@ import { TReaderTapZoneContext } from '@/features/reader/tap-zones/TapZoneLayout export interface ReaderTapZoneStoreSlice { tapZone: TReaderTapZoneContext & { - reset: () => void; + reset: () => ReaderTapZoneStoreSlice; }; } @@ -28,6 +28,6 @@ export const createReaderTapZoneStoreSlice = set((draft) => { draft.tapZone.showPreview = showPreview; }), - reset: () => set(() => ({ tapZone: { ...get().tapZone, ...DEFAULT_STATE } })), + reset: () => ({ tapZone: { ...get().tapZone, ...DEFAULT_STATE } }), }, });