From 59b9e3e5865dca249b87dc9e28da3fa2d94f1fc4 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Sun, 14 Apr 2024 18:12:19 +0530 Subject: [PATCH] Move into fs --- desktop/src/main/fs.ts | 7 ++----- desktop/src/main/ipc.ts | 4 ++-- desktop/src/preload.ts | 6 +++--- web/apps/photos/src/services/export/index.ts | 5 +++-- web/packages/next/types/ipc.ts | 10 ++++++++-- 5 files changed, 18 insertions(+), 14 deletions(-) diff --git a/desktop/src/main/fs.ts b/desktop/src/main/fs.ts index 8bce2a066..cdf51aff0 100644 --- a/desktop/src/main/fs.ts +++ b/desktop/src/main/fs.ts @@ -14,6 +14,8 @@ export const fsRename = (oldPath: string, newPath: string) => export const fsMkdirIfNeeded = (dirPath: string) => fs.mkdir(dirPath, { recursive: true }); +export const fsRmdir = (path: string) => fs.rmdir(path); + /** * Write a (web) ReadableStream to a file at the given {@link filePath}. * @@ -106,11 +108,6 @@ export const isFolder = async (dirPath: string) => { return stats.isDirectory(); }; -export const deleteFolder = async (folderPath: string) => { - // rm -rf it - await fs.rmdir(folderPath); -}; - export const deleteFile = async (filePath: string) => { // Ensure it exists if (!existsSync(filePath)) return; diff --git a/desktop/src/main/ipc.ts b/desktop/src/main/ipc.ts index 5c9d4a22e..ae8047595 100644 --- a/desktop/src/main/ipc.ts +++ b/desktop/src/main/ipc.ts @@ -19,7 +19,7 @@ import { } from "./dialogs"; import { deleteFile, - deleteFolder, + fsRmdir, fsExists, fsMkdirIfNeeded, fsRename, @@ -195,7 +195,7 @@ export const attachIPCHandlers = () => { moveFile(oldPath, newPath), ); - ipcMain.handle("deleteFolder", (_, path: string) => deleteFolder(path)); + ipcMain.handle("fsRmdir", (_, path: string) => fsRmdir(path)); ipcMain.handle("deleteFile", (_, path: string) => deleteFile(path)); diff --git a/desktop/src/preload.ts b/desktop/src/preload.ts index 550bd6f63..9c9161260 100644 --- a/desktop/src/preload.ts +++ b/desktop/src/preload.ts @@ -241,8 +241,8 @@ const isFolder = (dirPath: string): Promise => const moveFile = (oldPath: string, newPath: string): Promise => ipcRenderer.invoke("moveFile", oldPath, newPath); -const deleteFolder = (path: string): Promise => - ipcRenderer.invoke("deleteFolder", path); +const fsRmdir = (path: string): Promise => + ipcRenderer.invoke("fsRmdir", path); const deleteFile = (path: string): Promise => ipcRenderer.invoke("deleteFile", path); @@ -350,6 +350,7 @@ contextBridge.exposeInMainWorld("electron", { exists: fsExists, rename: fsRename, mkdirIfNeeded: fsMkdirIfNeeded, + rmdir: fsRmdir, }, // - FS legacy @@ -359,7 +360,6 @@ contextBridge.exposeInMainWorld("electron", { readTextFile, isFolder, moveFile, - deleteFolder, deleteFile, // - Upload diff --git a/web/apps/photos/src/services/export/index.ts b/web/apps/photos/src/services/export/index.ts index 4d7a2ed31..adf4e8313 100644 --- a/web/apps/photos/src/services/export/index.ts +++ b/web/apps/photos/src/services/export/index.ts @@ -564,6 +564,7 @@ class ExportService { exportFolder: string, isCanceled: CancellationStatus, ) { + const fs = ensureElectron().fs; try { const exportRecord = await this.getExportRecord(exportFolder); const collectionIDPathMap = @@ -598,11 +599,11 @@ class ExportService { ); try { // delete the collection metadata folder - await ensureElectron().deleteFolder( + await fs.rmdir( getMetadataFolderExportPath(collectionExportPath), ); // delete the collection folder - await ensureElectron().deleteFolder( + await fs.rmdir( collectionExportPath, ); } catch (e) { diff --git a/web/packages/next/types/ipc.ts b/web/packages/next/types/ipc.ts index 1eb53e115..62a992f49 100644 --- a/web/packages/next/types/ipc.ts +++ b/web/packages/next/types/ipc.ts @@ -163,7 +163,7 @@ export interface Electron { exists: (path: string) => Promise; /** - * mkdir -p + * Equivalent of `mkdir -p`. * * Create a directory at the given path if it does not already exist. * Any parent directories in the path that don't already exist will also @@ -174,6 +174,13 @@ export interface Electron { /** Rename {@link oldPath} to {@link newPath} */ rename: (oldPath: string, newPath: string) => Promise; + + /** + * Equivalent of `rmdir`. + * + * Delete the directory at the {@link path} if it is empty. + */ + rmdir: (path: string) => Promise; }; /* @@ -294,7 +301,6 @@ export interface Electron { readTextFile: (path: string) => Promise; isFolder: (dirPath: string) => Promise; moveFile: (oldPath: string, newPath: string) => Promise; - deleteFolder: (path: string) => Promise; deleteFile: (path: string) => Promise; // - Upload