From f83c017e0901d7ee34f21dfbd52f0c5eecdb6992 Mon Sep 17 00:00:00 2001 From: Rajarshee Chatterjee Date: Tue, 5 Nov 2024 08:07:31 +0530 Subject: [PATCH] fix: fix: Display Loading Animation on Novel Screen --- src/hooks/persisted/useNovel.ts | 58 ++++++++++++++------------------- 1 file changed, 25 insertions(+), 33 deletions(-) diff --git a/src/hooks/persisted/useNovel.ts b/src/hooks/persisted/useNovel.ts index 5ae603b2..2bdb4b78 100644 --- a/src/hooks/persisted/useNovel.ts +++ b/src/hooks/persisted/useNovel.ts @@ -336,6 +336,9 @@ export const useNovel = (novelPath: string, pluginId: string) => { return; } } + + setNovel(novel); + let pages: string[]; if (novel.totalPages > 0) { pages = Array(novel.totalPages) @@ -344,49 +347,38 @@ export const useNovel = (novelPath: string, pluginId: string) => { } else { pages = (await getCustomPages(novel.id)).map(c => c.page); } - if (pages.length) { - setPages(pages); - } else { - setPages(['1']); - } - setNovel(novel); - }, []); - const getChapters = useCallback(async () => { - const page = pages[pageIndex]; - if (novel && page) { - let chapters = await _getPageChapters( + setPages(pages.length ? pages : ['1']); + + const page = pages[pageIndex] || '1'; + let chapters = await _getPageChapters( + novel.id, + sort, + novelSettings.filter, + page, + ); + + if (!chapters.length && Number(page)) { + const sourcePage = await fetchPage(pluginId, novelPath, page); + const sourceChapters = sourcePage.chapters.map(ch => ({ + ...ch, + page, + })); + await insertChapters(novel.id, sourceChapters); + chapters = await _getPageChapters( novel.id, sort, novelSettings.filter, page, ); - if (!chapters.length && Number(page)) { - const sourcePage = await fetchPage(pluginId, novelPath, page); - const sourceChapters = sourcePage.chapters.map(ch => { - return { - ...ch, - page, - }; - }); - await insertChapters(novel.id, sourceChapters); - chapters = await _getPageChapters( - novel.id, - sort, - novelSettings.filter, - page, - ); - } - setChapters(chapters); } + setChapters(chapters); setLoading(false); - }, [novel, novelSettings, pageIndex]); + }, [novelPath, pluginId, pageIndex, sort, novelSettings.filter]); + useEffect(() => { getNovel(); - }, []); - useEffect(() => { - getChapters().catch(e => showToast(e.message)); - }, [getChapters]); + }, [getNovel]); return { loading,