mirror of
https://github.com/lifegpc/bookdownload.git
synced 2026-06-20 10:55:31 +08:00
33 lines
1.0 KiB
TypeScript
33 lines
1.0 KiB
TypeScript
import { createContext, useContext, Dispatch, SetStateAction } from "react";
|
|
import { QdChapterSimpleInfo } from "../../types";
|
|
import { Db } from "../../db/interfaces";
|
|
|
|
export type BookStatus = {
|
|
showSavedOnly: boolean;
|
|
chapterLists?: QdChapterSimpleInfo[];
|
|
}
|
|
|
|
export function createBookStatus(): BookStatus {
|
|
return {
|
|
showSavedOnly: false,
|
|
}
|
|
}
|
|
|
|
export async function loadChapterLists(bookId: number, setBookStatus: Dispatch<SetStateAction<BookStatus>>, db: Db) {
|
|
const list = await db.getChapterSimpleInfos(bookId);
|
|
setBookStatus((status) => ({ ...status, chapterLists: list }));
|
|
}
|
|
|
|
export async function loadChapterListsIfNeeded(bookId: number, bookStatus: BookStatus, setBookStatus: Dispatch<SetStateAction<BookStatus>>, db: Db) {
|
|
if (!bookStatus.chapterLists) {
|
|
await loadChapterLists(bookId, setBookStatus, db);
|
|
}
|
|
}
|
|
|
|
export const BookStatusContext = createContext<[BookStatus, Dispatch<SetStateAction<BookStatus>>]>(null as any);
|
|
|
|
export function useBookStatus() {
|
|
return useContext(BookStatusContext);
|
|
}
|
|
|