diff --git a/apps/readest-app/public/locales/ar/translation.json b/apps/readest-app/public/locales/ar/translation.json
index 3277c652..6a78604c 100644
--- a/apps/readest-app/public/locales/ar/translation.json
+++ b/apps/readest-app/public/locales/ar/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "جارٍ تنزيل {{downloaded}} من {{contentLength}}",
"Download finished": "اكتمل التنزيل",
"DOWNLOAD & INSTALL": "تنزيل وتثبيت",
- "Changelog:": "سجل التغييرات:"
+ "Changelog:": "سجل التغييرات:",
+ "Redownload": "إعادة التنزيل"
}
diff --git a/apps/readest-app/public/locales/de/translation.json b/apps/readest-app/public/locales/de/translation.json
index e59d6811..bbd571f0 100644
--- a/apps/readest-app/public/locales/de/translation.json
+++ b/apps/readest-app/public/locales/de/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Herunterladen {{downloaded}} von {{contentLength}}",
"Download finished": "Download abgeschlossen",
"DOWNLOAD & INSTALL": "HERUNTERLADEN & INSTALLIEREN",
- "Changelog:": "Änderungsprotokoll:"
+ "Changelog:": "Änderungsprotokoll:",
+ "Redownload": "Neu herunterladen"
}
diff --git a/apps/readest-app/public/locales/el/translation.json b/apps/readest-app/public/locales/el/translation.json
index 81de62ca..f0a67d81 100644
--- a/apps/readest-app/public/locales/el/translation.json
+++ b/apps/readest-app/public/locales/el/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Κατεβάζω {{downloaded}} από {{contentLength}}",
"Download finished": "Η λήψη ολοκληρώθηκε",
"DOWNLOAD & INSTALL": "ΛΗΨΗ & ΕΓΚΑΤΑΣΤΑΣΗ",
- "Changelog:": "Αλλαγές:"
+ "Changelog:": "Αλλαγές:",
+ "Redownload": "Επαναφόρτωση"
}
diff --git a/apps/readest-app/public/locales/es/translation.json b/apps/readest-app/public/locales/es/translation.json
index 9dedbbb8..a38b8615 100644
--- a/apps/readest-app/public/locales/es/translation.json
+++ b/apps/readest-app/public/locales/es/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Descargando {{downloaded}} de {{contentLength}}",
"Download finished": "Descarga finalizada",
"DOWNLOAD & INSTALL": "DESCARGAR E INSTALAR",
- "Changelog:": "Notas de la versión:"
+ "Changelog:": "Notas de la versión:",
+ "Redownload": "Volver a descargar"
}
diff --git a/apps/readest-app/public/locales/fr/translation.json b/apps/readest-app/public/locales/fr/translation.json
index a550569b..524d6826 100644
--- a/apps/readest-app/public/locales/fr/translation.json
+++ b/apps/readest-app/public/locales/fr/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Téléchargement {{downloaded}} sur {{contentLength}}",
"Download finished": "Téléchargement terminé",
"DOWNLOAD & INSTALL": "TÉLÉCHARGER ET INSTALLER",
- "Changelog:": "Journal des modifications :"
+ "Changelog:": "Journal des modifications :",
+ "Redownload": "Télécharger à nouveau"
}
diff --git a/apps/readest-app/public/locales/hi/translation.json b/apps/readest-app/public/locales/hi/translation.json
index 1bcafc45..13706af3 100644
--- a/apps/readest-app/public/locales/hi/translation.json
+++ b/apps/readest-app/public/locales/hi/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "डाउनलोड कर रहा है {{downloaded}} का {{contentLength}}",
"Download finished": "डाउनलोड पूरा हुआ",
"DOWNLOAD & INSTALL": "डाउनलोड और इंस्टॉल करें",
- "Changelog:": "चेंजलॉग:"
+ "Changelog:": "चेंजलॉग:",
+ "Redownload": "री-डाउनलोड करें"
}
diff --git a/apps/readest-app/public/locales/id/translation.json b/apps/readest-app/public/locales/id/translation.json
index 167c54b4..4070d6a5 100644
--- a/apps/readest-app/public/locales/id/translation.json
+++ b/apps/readest-app/public/locales/id/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Mengunduh {{downloaded}} dari {{contentLength}}",
"Download finished": "Unduhan selesai",
"DOWNLOAD & INSTALL": "UNDUH & INSTAL",
- "Changelog:": "Catatan Perubahan:"
+ "Changelog:": "Catatan Perubahan:",
+ "Redownload": "Unduh Ulang"
}
diff --git a/apps/readest-app/public/locales/it/translation.json b/apps/readest-app/public/locales/it/translation.json
index e4a0e171..5b720a16 100644
--- a/apps/readest-app/public/locales/it/translation.json
+++ b/apps/readest-app/public/locales/it/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Scaricando {{downloaded}} di {{contentLength}}",
"Download finished": "Download completato",
"DOWNLOAD & INSTALL": "SCARICA E INSTALLA",
- "Changelog:": "Note di rilascio:"
+ "Changelog:": "Note di rilascio:",
+ "Redownload": "Scarica di nuovo"
}
diff --git a/apps/readest-app/public/locales/ja/translation.json b/apps/readest-app/public/locales/ja/translation.json
index f9650329..ebaa22b1 100644
--- a/apps/readest-app/public/locales/ja/translation.json
+++ b/apps/readest-app/public/locales/ja/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "ダウンロード中 {{downloaded}} / {{contentLength}}",
"Download finished": "ダウンロード完了",
"DOWNLOAD & INSTALL": "更新",
- "Changelog:": "変更ログ:"
+ "Changelog:": "変更ログ:",
+ "Redownload": "再ダウンロード"
}
diff --git a/apps/readest-app/public/locales/ko/translation.json b/apps/readest-app/public/locales/ko/translation.json
index f438dab1..091aaa75 100644
--- a/apps/readest-app/public/locales/ko/translation.json
+++ b/apps/readest-app/public/locales/ko/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "다운로드 중 {{downloaded}} / {{contentLength}}",
"Download finished": "다운로드 완료",
"DOWNLOAD & INSTALL": "다운로드 및 설치",
- "Changelog:": "변경 로그:"
+ "Changelog:": "변경 로그:",
+ "Redownload": "다시 다운로드"
}
diff --git a/apps/readest-app/public/locales/pl/translation.json b/apps/readest-app/public/locales/pl/translation.json
index 65fb1858..80129293 100644
--- a/apps/readest-app/public/locales/pl/translation.json
+++ b/apps/readest-app/public/locales/pl/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Pobieranie {{downloaded}} z {{contentLength}}",
"Download finished": "Pobieranie zakończone",
"DOWNLOAD & INSTALL": "POBIERZ I ZAINSTALUJ",
- "Changelog:": "Dziennik zmian:"
+ "Changelog:": "Dziennik zmian:",
+ "Redownload": "Pobierz ponownie"
}
diff --git a/apps/readest-app/public/locales/pt/translation.json b/apps/readest-app/public/locales/pt/translation.json
index 7100ec87..057e5f69 100644
--- a/apps/readest-app/public/locales/pt/translation.json
+++ b/apps/readest-app/public/locales/pt/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Baixando {{downloaded}} de {{contentLength}}",
"Download finished": "Download concluído",
"DOWNLOAD & INSTALL": "BAIXAR E INSTALAR",
- "Changelog:": "Notas de versão:"
+ "Changelog:": "Notas de versão:",
+ "Redownload": "Baixar novamente"
}
diff --git a/apps/readest-app/public/locales/ru/translation.json b/apps/readest-app/public/locales/ru/translation.json
index 851ae877..89cfa003 100644
--- a/apps/readest-app/public/locales/ru/translation.json
+++ b/apps/readest-app/public/locales/ru/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Скачано {{downloaded}} из {{contentLength}}",
"Download finished": "Загрузка завершена",
"DOWNLOAD & INSTALL": "СКАЧАТЬ И УСТАНОВИТЬ",
- "Changelog:": "Изменения:"
+ "Changelog:": "Изменения:",
+ "Redownload": "Переустановить"
}
diff --git a/apps/readest-app/public/locales/tr/translation.json b/apps/readest-app/public/locales/tr/translation.json
index 784eb0b0..cdf6b4ea 100644
--- a/apps/readest-app/public/locales/tr/translation.json
+++ b/apps/readest-app/public/locales/tr/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "İndiriliyor {{downloaded}}/{{contentLength}}",
"Download finished": "İndirme tamamlandı",
"DOWNLOAD & INSTALL": "İNDİR & YÜKLE",
- "Changelog:": "Değişiklik Günlüğü:"
+ "Changelog:": "Değişiklik Günlüğü:",
+ "Redownload": "Yeniden İndir"
}
diff --git a/apps/readest-app/public/locales/uk/translation.json b/apps/readest-app/public/locales/uk/translation.json
index 2e0d17b6..8f5713d3 100644
--- a/apps/readest-app/public/locales/uk/translation.json
+++ b/apps/readest-app/public/locales/uk/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Завантаження {{downloaded}} з {{contentLength}}",
"Download finished": "Завантаження завершено",
"DOWNLOAD & INSTALL": "ЗАВАНТАЖИТИ І ВСТАНОВИТИ",
- "Changelog:": "Журнал змін:"
+ "Changelog:": "Журнал змін:",
+ "Redownload": "Завантажити знову"
}
diff --git a/apps/readest-app/public/locales/vi/translation.json b/apps/readest-app/public/locales/vi/translation.json
index c906485b..c39d66cb 100644
--- a/apps/readest-app/public/locales/vi/translation.json
+++ b/apps/readest-app/public/locales/vi/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "Đang tải {{downloaded}} trong {{contentLength}}",
"Download finished": "Tải xuống hoàn tất",
"DOWNLOAD & INSTALL": "TẢI XUỐNG & CÀI ĐẶT",
- "Changelog:": "Thay đổi:"
+ "Changelog:": "Thay đổi:",
+ "Redownload": "Tải lại"
}
diff --git a/apps/readest-app/public/locales/zh-CN/translation.json b/apps/readest-app/public/locales/zh-CN/translation.json
index 5c78d7a3..65bab670 100644
--- a/apps/readest-app/public/locales/zh-CN/translation.json
+++ b/apps/readest-app/public/locales/zh-CN/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "正在下载 {{downloaded}} / {{contentLength}}",
"Download finished": "下载完成",
"DOWNLOAD & INSTALL": "下载并安装",
- "Changelog:": "更新日志:"
+ "Changelog:": "更新日志:",
+ "Redownload": "重新下载"
}
diff --git a/apps/readest-app/public/locales/zh-TW/translation.json b/apps/readest-app/public/locales/zh-TW/translation.json
index 28ff7772..3a6b23b9 100644
--- a/apps/readest-app/public/locales/zh-TW/translation.json
+++ b/apps/readest-app/public/locales/zh-TW/translation.json
@@ -281,5 +281,6 @@
"Downloading {{downloaded}} of {{contentLength}}": "正在下載 {{downloaded}} / {{contentLength}}",
"Download finished": "下載完成",
"DOWNLOAD & INSTALL": "下載並安裝",
- "Changelog:": "更新日誌:"
+ "Changelog:": "更新日誌:",
+ "Redownload": "重新下載"
}
diff --git a/apps/readest-app/src/app/library/hooks/useBooksSync.ts b/apps/readest-app/src/app/library/hooks/useBooksSync.ts
index 64d65a42..6208eef5 100644
--- a/apps/readest-app/src/app/library/hooks/useBooksSync.ts
+++ b/apps/readest-app/src/app/library/hooks/useBooksSync.ts
@@ -98,11 +98,12 @@ export const useBooksSync = ({ onSyncStart, onSyncEnd }: UseBooksSyncProps) => {
if (newBook.uploadedAt && !newBook.deletedAt) {
try {
await appService?.downloadBook(newBook, true);
+ } catch {
+ console.error('Failed to download book:', newBook);
+ } finally {
newBook.coverImageUrl = await appService?.generateCoverImageUrl(newBook);
updatedLibrary.push(newBook);
setLibrary(updatedLibrary);
- } catch {
- console.error('Failed to download book:', newBook);
}
}
}
diff --git a/apps/readest-app/src/components/BookDetailModal.tsx b/apps/readest-app/src/components/BookDetailModal.tsx
index 8851594d..2ec7725b 100644
--- a/apps/readest-app/src/components/BookDetailModal.tsx
+++ b/apps/readest-app/src/components/BookDetailModal.tsx
@@ -129,9 +129,11 @@ const BookDetailModal = ({ book, isOpen, onClose }: BookDetailModalProps) => {
>
{_('Delete')}
-
+ {book.uploadedAt && (
+
+ )}
)}
@@ -145,9 +147,11 @@ const BookDetailModal = ({ book, isOpen, onClose }: BookDetailModalProps) => {
>
{_('Delete')}
-
+ {book.uploadedAt && (
+
+ )}
)}
diff --git a/apps/readest-app/src/libs/storage.ts b/apps/readest-app/src/libs/storage.ts
index 4bbe9cb3..2caa1e82 100644
--- a/apps/readest-app/src/libs/storage.ts
+++ b/apps/readest-app/src/libs/storage.ts
@@ -97,7 +97,7 @@ export const downloadFile = async (
return;
}
} catch (error) {
- console.error('File download failed:', error);
+ console.error(`File '${filePath}' download failed:`, error);
throw new Error('File download failed');
}
};
diff --git a/apps/readest-app/src/services/appService.ts b/apps/readest-app/src/services/appService.ts
index d963bec7..e42be072 100644
--- a/apps/readest-app/src/services/appService.ts
+++ b/apps/readest-app/src/services/appService.ts
@@ -375,11 +375,16 @@ export abstract class BaseAppService implements AppService {
await this.fs.createDir(getDir(book), 'Books');
}
- if (needDownCover) {
- const lfp = getCoverFilename(book);
- const cfp = `${CLOUD_BOOKS_SUBDIR}/${lfp}`;
- await this.downloadCloudFile(lfp, cfp, handleProgress);
- completedFiles.count++;
+ try {
+ if (needDownCover) {
+ const lfp = getCoverFilename(book);
+ const cfp = `${CLOUD_BOOKS_SUBDIR}/${lfp}`;
+ await this.downloadCloudFile(lfp, cfp, handleProgress);
+ completedFiles.count++;
+ }
+ } catch (error) {
+ // don't throw error here since some books may not have cover images at all
+ console.log('Failed to download cover file:', error);
}
if (needDownBook) {