library: fix book not redownloaded for the redownload button in detail modal, closes #1628 (#1638)

This commit is contained in:
Huang Xin
2025-07-21 03:00:29 +08:00
committed by GitHub
parent ca9f504329
commit 0299cce343
4 changed files with 19 additions and 8 deletions
+2 -2
View File
@@ -511,9 +511,9 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
}
};
const handleBookDownload = async (book: Book) => {
const handleBookDownload = async (book: Book, redownload = false) => {
try {
await appService?.downloadBook(book, false, (progress) => {
await appService?.downloadBook(book, false, redownload, (progress) => {
updateBookTransferProgress(book.hash, progress);
});
await updateBook(envConfig, book);
@@ -18,7 +18,7 @@ interface BookDetailModalProps {
book: Book;
isOpen: boolean;
onClose: () => void;
handleBookDownload?: (book: Book) => void;
handleBookDownload?: (book: Book, redownload?: boolean) => void;
handleBookUpload?: (book: Book) => void;
handleBookDelete?: (book: Book) => void;
handleBookDeleteCloudBackup?: (book: Book) => void;
@@ -132,7 +132,7 @@ const BookDetailModal: React.FC<BookDetailModalProps> = ({
const handleRedownload = async () => {
handleClose();
if (handleBookDownload) {
handleBookDownload(book);
handleBookDownload(book, true);
}
};
+9 -3
View File
@@ -381,13 +381,19 @@ export abstract class BaseAppService implements AppService {
}
}
async downloadBook(book: Book, onlyCover = false, onProgress?: ProgressHandler): Promise<void> {
async downloadBook(
book: Book,
onlyCover = false,
redownload = false,
onProgress?: ProgressHandler,
): Promise<void> {
let bookDownloaded = false;
let bookCoverDownloaded = false;
const completedFiles = { count: 0 };
let toDownloadFpCount = 0;
const needDownCover = !(await this.fs.exists(getCoverFilename(book), 'Books'));
const needDownBook = !onlyCover && !(await this.fs.exists(getLocalBookFilename(book), 'Books'));
const needDownCover = !(await this.fs.exists(getCoverFilename(book), 'Books')) || redownload;
const needDownBook =
(!onlyCover && !(await this.fs.exists(getLocalBookFilename(book), 'Books'))) || redownload;
if (needDownCover) {
toDownloadFpCount++;
}
+6 -1
View File
@@ -59,7 +59,12 @@ export interface AppService {
): Promise<Book | null>;
deleteBook(book: Book, includingUploaded?: boolean, includingLocal?: boolean): Promise<void>;
uploadBook(book: Book, onProgress?: ProgressHandler): Promise<void>;
downloadBook(book: Book, onlyCover?: boolean, onProgress?: ProgressHandler): Promise<void>;
downloadBook(
book: Book,
onlyCover?: boolean,
redownload?: boolean,
onProgress?: ProgressHandler,
): Promise<void>;
isBookAvailable(book: Book): Promise<boolean>;
getBookFileSize(book: Book): Promise<number | null>;
loadBookConfig(book: Book, settings: SystemSettings): Promise<BookConfig>;