fix: don't open book if failed to download book (#541)

This commit is contained in:
Huang Xin
2025-03-09 17:29:16 +08:00
committed by GitHub
parent 664dc45fcc
commit 6688c813e6
3 changed files with 15 additions and 10 deletions
@@ -21,9 +21,9 @@ interface BookshelfProps {
libraryBooks: Book[];
isSelectMode: boolean;
handleImportBooks: () => void;
handleBookUpload: (book: Book) => void;
handleBookDownload: (book: Book) => void;
handleBookDelete: (book: Book) => void;
handleBookUpload: (book: Book) => Promise<boolean>;
handleBookDownload: (book: Book) => Promise<boolean>;
handleBookDelete: (book: Book) => Promise<boolean>;
handleSetSelectMode: (selectMode: boolean) => void;
handleShowDetailsBook: (book: Book) => void;
booksTransferProgress: { [key: string]: number | null };
@@ -72,9 +72,9 @@ interface BookshelfItemProps {
transferProgress: number | null;
setLoading: React.Dispatch<React.SetStateAction<boolean>>;
toggleSelection: (hash: string) => void;
handleBookUpload: (book: Book) => void;
handleBookDownload: (book: Book) => void;
handleBookDelete: (book: Book) => void;
handleBookUpload: (book: Book) => Promise<boolean>;
handleBookDownload: (book: Book) => Promise<boolean>;
handleBookDelete: (book: Book) => Promise<boolean>;
handleSetSelectMode: (selectMode: boolean) => void;
handleShowDetailsBook: (book: Book) => void;
}
@@ -109,9 +109,8 @@ const BookshelfItem: React.FC<BookshelfItemProps> = ({
let available = false;
const loadingTimeout = setTimeout(() => setLoading(true), 200);
try {
await handleBookDownload(book);
available = await handleBookDownload(book);
updateBook(envConfig, book);
available = true;
} finally {
if (loadingTimeout) clearTimeout(loadingTimeout);
setLoading(false);
+8 -2
View File
@@ -360,17 +360,18 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
title: book.title,
}),
});
return true;
} catch (err) {
if (err instanceof Error) {
if (err.message.includes('Not authenticated') && settings.keepLogin) {
navigateToLogin(router);
return;
return false;
} else if (err.message.includes('Insufficient storage quota')) {
eventDispatcher.dispatch('toast', {
type: 'error',
message: _('Insufficient storage quota'),
});
return;
return false;
}
}
eventDispatcher.dispatch('toast', {
@@ -379,6 +380,7 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
title: book.title,
}),
});
return false;
}
};
@@ -395,6 +397,7 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
title: book.title,
}),
});
return true;
} catch {
eventDispatcher.dispatch('toast', {
message: _('Failed to download book: {{title}}', {
@@ -402,6 +405,7 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
}),
type: 'error',
});
return false;
}
};
@@ -417,6 +421,7 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
title: book.title,
}),
});
return true;
} catch {
eventDispatcher.dispatch('toast', {
message: _('Failed to delete book: {{title}}', {
@@ -424,6 +429,7 @@ const LibraryPageContent = ({ searchParams }: { searchParams: ReadonlyURLSearchP
}),
type: 'error',
});
return false;
}
};