(null);
const { envConfig } = useEnv();
@@ -73,6 +76,10 @@ const BookDetailModal = ({
setShowDeleteAlert(true);
};
+ const handleDeleteCloudStore = () => {
+ setShowDeleteCloudStoreAlert(true);
+ };
+
const confirmDelete = async () => {
handleClose();
setShowDeleteAlert(false);
@@ -81,6 +88,14 @@ const BookDetailModal = ({
}
};
+ const confirmDeleteCloudStore = async () => {
+ handleClose();
+ setShowDeleteCloudStoreAlert(false);
+ if (handleBookDeleteCloudStore) {
+ handleBookDeleteCloudStore(book);
+ }
+ };
+
const handleRedownload = async () => {
handleClose();
if (handleBookDownload) {
@@ -132,17 +147,22 @@ const BookDetailModal = ({
{handleBookDelete && (
+ )}
+ {book.uploadedAt && handleBookDeleteCloudStore && (
+
)}
{book.uploadedAt && handleBookDownload && (
)}
{book.downloadedAt && handleBookUpload && (
)}
@@ -221,6 +241,23 @@ const BookDetailModal = ({
/>
)}
+ {showDeleteCloudStoreAlert && (
+
+
{
+ setShowDeleteAlert(false);
+ }}
+ onConfirm={confirmDeleteCloudStore}
+ />
+
+ )}
);
};
diff --git a/apps/readest-app/src/services/appService.ts b/apps/readest-app/src/services/appService.ts
index 7d857f97..4d2fd15a 100644
--- a/apps/readest-app/src/services/appService.ts
+++ b/apps/readest-app/src/services/appService.ts
@@ -272,16 +272,18 @@ export abstract class BaseAppService implements AppService {
}
}
- async deleteBook(book: Book, includingUploaded = false): Promise {
- const fps = [getRemoteBookFilename(book), getCoverFilename(book)];
- const localDeleteFps = [getLocalBookFilename(book), getCoverFilename(book)];
- for (const fp of localDeleteFps) {
- if (await this.fs.exists(fp, 'Books')) {
- await this.fs.removeFile(fp, 'Books');
+ async deleteBook(book: Book, includingUploaded = false, includingLocal = true): Promise {
+ if (includingLocal) {
+ const localDeleteFps = [getLocalBookFilename(book), getCoverFilename(book)];
+ for (const fp of localDeleteFps) {
+ if (await this.fs.exists(fp, 'Books')) {
+ await this.fs.removeFile(fp, 'Books');
+ }
}
}
- for (const fp of fps) {
- if (includingUploaded) {
+ if (includingUploaded) {
+ const fps = [getRemoteBookFilename(book), getCoverFilename(book)];
+ for (const fp of fps) {
console.log('Deleting uploaded file:', fp);
const cfp = `${CLOUD_BOOKS_SUBDIR}/${fp}`;
try {
@@ -291,8 +293,11 @@ export abstract class BaseAppService implements AppService {
}
}
}
- book.deletedAt = Date.now();
- book.downloadedAt = null;
+
+ if (includingLocal) {
+ book.deletedAt = Date.now();
+ book.downloadedAt = null;
+ }
if (includingUploaded) {
book.uploadedAt = null;
}
diff --git a/apps/readest-app/src/types/system.ts b/apps/readest-app/src/types/system.ts
index 11a78d55..75e82f3f 100644
--- a/apps/readest-app/src/types/system.ts
+++ b/apps/readest-app/src/types/system.ts
@@ -57,7 +57,7 @@ export interface AppService {
overwrite?: boolean,
transient?: boolean,
): Promise;
- deleteBook(book: Book, includingUploaded?: boolean): Promise;
+ deleteBook(book: Book, includingUploaded?: boolean, includingLocal?: boolean): Promise;
uploadBook(book: Book, onProgress?: ProgressHandler): Promise;
downloadBook(book: Book, onlyCover?: boolean, onProgress?: ProgressHandler): Promise;
isBookAvailable(book: Book): Promise;