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:
@@ -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
|
* 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.
|
* after the end of the chapter is reached.
|
||||||
*/
|
*/
|
||||||
mangaChapters?: TChapterReader[];
|
mangaChapters: TChapterReader[] | undefined;
|
||||||
/**
|
/**
|
||||||
* Actual chapters that have been filtered
|
* Actual chapters that have been filtered
|
||||||
*
|
*
|
||||||
@@ -215,11 +215,11 @@ export interface ReaderStateChapters {
|
|||||||
* - Manga chapter list filters
|
* - Manga chapter list filters
|
||||||
*/
|
*/
|
||||||
chapters: TChapterReader[];
|
chapters: TChapterReader[];
|
||||||
chapterForDuplicatesHandling?: TChapterReader | null;
|
chapterForDuplicatesHandling: TChapterReader | null | undefined;
|
||||||
initialChapter?: TChapterReader | null;
|
initialChapter: TChapterReader | null | undefined;
|
||||||
currentChapter?: TChapterReader | null;
|
currentChapter: TChapterReader | null | undefined;
|
||||||
nextChapter?: TChapterReader;
|
nextChapter: TChapterReader | undefined;
|
||||||
previousChapter?: TChapterReader;
|
previousChapter: TChapterReader | undefined;
|
||||||
isCurrentChapterReady: boolean;
|
isCurrentChapterReady: boolean;
|
||||||
/**
|
/**
|
||||||
* Based from the initial chapter index
|
* Based from the initial chapter index
|
||||||
@@ -232,9 +232,8 @@ export interface ReaderStateChapters {
|
|||||||
isLeadingChapterPreloadMode: boolean;
|
isLeadingChapterPreloadMode: boolean;
|
||||||
isTrailingChapterPreloadMode: boolean;
|
isTrailingChapterPreloadMode: boolean;
|
||||||
scrollIntoView: boolean;
|
scrollIntoView: boolean;
|
||||||
resumeMode?: ReaderResumeMode;
|
resumeMode: ReaderResumeMode | undefined;
|
||||||
};
|
};
|
||||||
setReaderStateChapters: React.Dispatch<React.SetStateAction<Omit<ReaderStateChapters, 'setReaderStateChapters'>>>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ReaderSettingsTypeBaseProps {
|
interface ReaderSettingsTypeBaseProps {
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ export interface ReaderAutoScrollStoreSlice {
|
|||||||
invert: boolean;
|
invert: boolean;
|
||||||
setInvert: (invert: boolean) => void;
|
setInvert: (invert: boolean) => void;
|
||||||
direction: ScrollOffset;
|
direction: ScrollOffset;
|
||||||
reset: () => void;
|
reset: () => ReaderAutoScrollStoreSlice;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,10 +63,7 @@ export const createReaderAutoScrollStoreSlice = <T extends ReaderAutoScrollStore
|
|||||||
({
|
({
|
||||||
autoScroll: {
|
autoScroll: {
|
||||||
...DEFAULT_STATE,
|
...DEFAULT_STATE,
|
||||||
reset: () =>
|
reset: () => ({ autoScroll: { ...get().autoScroll, ...DEFAULT_STATE } }),
|
||||||
set((draft) => {
|
|
||||||
draft.autoScroll = { ...get().autoScroll, ...DEFAULT_STATE };
|
|
||||||
}),
|
|
||||||
setIsActive: (active) =>
|
setIsActive: (active) =>
|
||||||
set((draft) => {
|
set((draft) => {
|
||||||
draft.autoScroll.isActive = active;
|
draft.autoScroll.isActive = active;
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ export interface ReaderOverlayStoreSlice {
|
|||||||
overlay: {
|
overlay: {
|
||||||
isVisible: boolean;
|
isVisible: boolean;
|
||||||
setIsVisible: (visible: boolean) => void;
|
setIsVisible: (visible: boolean) => void;
|
||||||
reset: () => void;
|
reset: () => ReaderOverlayStoreSlice;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -29,6 +29,6 @@ export const createReaderOverlayStoreSlice = <T extends ReaderOverlayStoreSlice>
|
|||||||
set((draft) => {
|
set((draft) => {
|
||||||
draft.overlay.isVisible = visible;
|
draft.overlay.isVisible = visible;
|
||||||
}),
|
}),
|
||||||
reset: () => set(() => ({ overlay: { ...get().overlay, ...DEFAULT_STATE } })),
|
reset: () => ({ overlay: { ...get().overlay, ...DEFAULT_STATE } }),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { TReaderProgressBarContext } from '@/features/reader/overlay/progress-ba
|
|||||||
|
|
||||||
export interface ReaderProgressBarStoreSlice {
|
export interface ReaderProgressBarStoreSlice {
|
||||||
progressBar: TReaderProgressBarContext & {
|
progressBar: TReaderProgressBarContext & {
|
||||||
reset: () => void;
|
reset: () => ReaderProgressBarStoreSlice;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -33,6 +33,6 @@ export const createReaderProgressBarStoreSlice = <T extends ReaderProgressBarSto
|
|||||||
set((draft) => {
|
set((draft) => {
|
||||||
draft.progressBar.isDragging = dragging;
|
draft.progressBar.isDragging = dragging;
|
||||||
}),
|
}),
|
||||||
reset: () => set(() => ({ progressBar: { ...get().progressBar, ...DEFAULT_STATE } })),
|
reset: () => ({ progressBar: { ...get().progressBar, ...DEFAULT_STATE } }),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -11,13 +11,22 @@ import { ReaderStateChapters } from '@/features/reader/Reader.types.ts';
|
|||||||
|
|
||||||
export interface ReaderChaptersStoreSlice {
|
export interface ReaderChaptersStoreSlice {
|
||||||
chapters: ReaderStateChapters & {
|
chapters: ReaderStateChapters & {
|
||||||
reset: () => void;
|
setReaderStateChapters: (
|
||||||
|
state: ((state: ReaderStateChapters) => ReaderStateChapters) | ReaderStateChapters,
|
||||||
|
) => void;
|
||||||
|
reset: () => ReaderChaptersStoreSlice;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
export const READER_DEFAULT_CHAPTERS_STATE = {
|
export const READER_DEFAULT_CHAPTERS_STATE = {
|
||||||
chapters: {
|
chapters: {
|
||||||
|
mangaChapters: undefined,
|
||||||
chapters: [],
|
chapters: [],
|
||||||
|
chapterForDuplicatesHandling: undefined,
|
||||||
|
initialChapter: undefined,
|
||||||
|
currentChapter: undefined,
|
||||||
|
nextChapter: undefined,
|
||||||
|
previousChapter: undefined,
|
||||||
isCurrentChapterReady: false,
|
isCurrentChapterReady: false,
|
||||||
visibleChapters: {
|
visibleChapters: {
|
||||||
leading: 0,
|
leading: 0,
|
||||||
@@ -39,7 +48,7 @@ export const createReaderChaptersStoreSlice = <T extends ReaderChaptersStoreSlic
|
|||||||
): ReaderChaptersStoreSlice => ({
|
): ReaderChaptersStoreSlice => ({
|
||||||
chapters: {
|
chapters: {
|
||||||
...READER_DEFAULT_CHAPTERS_STATE.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) =>
|
setReaderStateChapters: (state) =>
|
||||||
set((draft) => {
|
set((draft) => {
|
||||||
if (typeof state === 'function') {
|
if (typeof state === 'function') {
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import { requestManager } from '@/lib/requests/RequestManager.ts';
|
|||||||
|
|
||||||
export interface ReaderPagesStoreSlice {
|
export interface ReaderPagesStoreSlice {
|
||||||
pages: ReaderStatePages & {
|
pages: ReaderStatePages & {
|
||||||
reset: () => void;
|
reset: () => ReaderPagesStoreSlice;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -52,7 +52,7 @@ export const createReaderPagesStoreSlice = <T extends ReaderPagesStoreSlice>(
|
|||||||
): ReaderPagesStoreSlice => ({
|
): ReaderPagesStoreSlice => ({
|
||||||
pages: {
|
pages: {
|
||||||
...READER_DEFAULT_PAGES_STATE,
|
...READER_DEFAULT_PAGES_STATE,
|
||||||
reset: () => set(() => ({ pages: { ...get().pages, ...READER_DEFAULT_PAGES_STATE } })),
|
reset: () => ({ pages: { ...get().pages, ...READER_DEFAULT_PAGES_STATE } }),
|
||||||
setCurrentPageIndex: (index) =>
|
setCurrentPageIndex: (index) =>
|
||||||
set((draft) => {
|
set((draft) => {
|
||||||
draft.pages.currentPageIndex = index;
|
draft.pages.currentPageIndex = index;
|
||||||
|
|||||||
@@ -67,20 +67,24 @@ const readerStore = create<ReaderStore>()(
|
|||||||
immer((set, get, store) => ({
|
immer((set, get, store) => ({
|
||||||
...DEFAULT_STATE,
|
...DEFAULT_STATE,
|
||||||
reset: () =>
|
reset: () =>
|
||||||
set((draft) => {
|
set(() => ({
|
||||||
draft.manga = DEFAULT_STATE.manga;
|
...get(),
|
||||||
draft.scrollbar = { ...get().scrollbar, ...DEFAULT_STATE.scrollbar };
|
...DEFAULT_STATE,
|
||||||
get().overlay.reset();
|
scrollbar: {
|
||||||
get().autoScroll.reset();
|
...get().scrollbar,
|
||||||
get().pages.reset();
|
...DEFAULT_STATE.scrollbar,
|
||||||
get().chapters.reset();
|
},
|
||||||
draft.settings = {
|
settings: {
|
||||||
...get().settings,
|
...get().settings,
|
||||||
...DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG,
|
...DEFAULT_READER_SETTINGS_WITH_DEFAULT_FLAG,
|
||||||
};
|
},
|
||||||
get().progressBar.reset();
|
...get().overlay.reset(),
|
||||||
get().tapZone.reset();
|
...get().autoScroll.reset(),
|
||||||
}),
|
...get().pages.reset(),
|
||||||
|
...get().chapters.reset(),
|
||||||
|
...get().progressBar.reset(),
|
||||||
|
...get().tapZone.reset(),
|
||||||
|
})),
|
||||||
setManga: (manga) =>
|
setManga: (manga) =>
|
||||||
set((draft) => {
|
set((draft) => {
|
||||||
draft.manga = manga;
|
draft.manga = manga;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import { TReaderTapZoneContext } from '@/features/reader/tap-zones/TapZoneLayout
|
|||||||
|
|
||||||
export interface ReaderTapZoneStoreSlice {
|
export interface ReaderTapZoneStoreSlice {
|
||||||
tapZone: TReaderTapZoneContext & {
|
tapZone: TReaderTapZoneContext & {
|
||||||
reset: () => void;
|
reset: () => ReaderTapZoneStoreSlice;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,6 +28,6 @@ export const createReaderTapZoneStoreSlice = <T extends ReaderTapZoneStoreSlice>
|
|||||||
set((draft) => {
|
set((draft) => {
|
||||||
draft.tapZone.showPreview = showPreview;
|
draft.tapZone.showPreview = showPreview;
|
||||||
}),
|
}),
|
||||||
reset: () => set(() => ({ tapZone: { ...get().tapZone, ...DEFAULT_STATE } })),
|
reset: () => ({ tapZone: { ...get().tapZone, ...DEFAULT_STATE } }),
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user