fix: fix: Display Loading Animation on Novel Screen

This commit is contained in:
Rajarshee Chatterjee
2024-11-05 08:07:31 +05:30
parent e38cb9972f
commit f83c017e09
+25 -33
View File
@@ -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,