diff --git a/apps/readest-app/src/app/reader/page.tsx b/apps/readest-app/src/app/reader/page.tsx index aef382ea..ab4fbb58 100644 --- a/apps/readest-app/src/app/reader/page.tsx +++ b/apps/readest-app/src/app/reader/page.tsx @@ -21,11 +21,17 @@ const ReaderPage = () => { useEffect(() => { envConfig.appService().then((appService) => { - appService.loadSettings().then(() => { - if (id && !bookState.content) { - fetchBook(appService, id); - } - }); + appService + .loadSettings() + .then(() => { + return id && !bookState.content ? fetchBook(appService, id) : null; + }) + .then((book) => { + if (book) { + book.lastUpdated = Date.now(); + appService.updateLibraryBook(book); + } + }); }); }, [id, fetchBook, bookState.content, envConfig]); diff --git a/apps/readest-app/src/store/readerStore.ts b/apps/readest-app/src/store/readerStore.ts index 8d91aa3b..bed5124c 100644 --- a/apps/readest-app/src/store/readerStore.ts +++ b/apps/readest-app/src/store/readerStore.ts @@ -1,6 +1,6 @@ import { create } from 'zustand'; -import { BookNote, BookContent } from '@/types/book'; +import { BookNote, BookContent, Book } from '@/types/book'; import { AppService } from '@/types/system'; interface BookState { @@ -12,7 +12,7 @@ interface BookState { interface ReaderStore { books: Record; - fetchBook: (appService: AppService, id: string) => Promise; + fetchBook: (appService: AppService, id: string) => Promise; addNote: (id: string, note: BookNote) => void; } @@ -42,6 +42,7 @@ export const useReaderStore = create((set) => { [id]: { ...state.books[id], loading: false, content }, }, })); + return book; } catch (error) { console.error(error); set((state) => ({ @@ -50,6 +51,7 @@ export const useReaderStore = create((set) => { [id]: { ...state.books[id], loading: false, error: 'Failed to load book.' }, }, })); + return null; } }, diff --git a/apps/readest-app/src/types/system.ts b/apps/readest-app/src/types/system.ts index d2c7c5e5..e8ead0f6 100644 --- a/apps/readest-app/src/types/system.ts +++ b/apps/readest-app/src/types/system.ts @@ -31,5 +31,6 @@ export interface AppService { loadBookContent(book: Book): Promise; loadLibraryBooks(): Promise; saveLibraryBooks(books: Book[]): Promise; + updateLibraryBook(book: Book): Promise; getCoverImageUrl(book: Book): string; }