Fix reset of reader store

After the slice states got reset, the base reset function just reverted all those resets and only reset the base states in the store (manga, scrollbar, ...)
This commit is contained in:
schroda
2025-09-22 00:07:57 +02:00
parent 4a07198af6
commit f6b94c838b
8 changed files with 44 additions and 35 deletions

View File

@@ -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 = <T extends ReaderChaptersStoreSlic
): ReaderChaptersStoreSlice => ({
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') {

View File

@@ -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 = <T extends ReaderPagesStoreSlice>(
): 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;

View File

@@ -67,20 +67,24 @@ const readerStore = create<ReaderStore>()(
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;