aboutsummaryrefslogtreecommitdiffstats
path: root/packages/meshbay-client/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/meshbay-client/src')
-rw-r--r--packages/meshbay-client/src/main.js9
-rw-r--r--packages/meshbay-client/src/preload.js6
2 files changed, 15 insertions, 0 deletions
diff --git a/packages/meshbay-client/src/main.js b/packages/meshbay-client/src/main.js
index 0ed06d9..e7e7b15 100644
--- a/packages/meshbay-client/src/main.js
+++ b/packages/meshbay-client/src/main.js
@@ -559,6 +559,15 @@ function registerBridge() {
return true;
});
+ ipcMain.handle('root:choose', async () => {
+ const result = await dialog.showOpenDialog(mainWindow, {
+ properties: ['openDirectory', 'createDirectory'],
+ });
+ if (result.canceled || !result.filePaths.length) return null;
+ const chosen = result.filePaths[0];
+ return { path: chosen, name: path.basename(chosen) };
+ });
+
ipcMain.handle('save:begin', async (_e, suggestedName, opts) => {
const wanted = path.basename(String(suggestedName || 'download'));
const chosen = chosenDownloadDir();
diff --git a/packages/meshbay-client/src/preload.js b/packages/meshbay-client/src/preload.js
index 3804ad3..e3af68f 100644
--- a/packages/meshbay-client/src/preload.js
+++ b/packages/meshbay-client/src/preload.js
@@ -74,6 +74,12 @@ contextBridge.exposeInMainWorld('meshbay', {
forget: () => ipcRenderer.invoke('folder:forget'),
},
+ // Pick a directory to share as a group root. Returns { path, name } — the
+ // path is forwarded over MNP to the node, which is the local machine for D5.
+ rootPicker: {
+ choose: () => ipcRenderer.invoke('root:choose'),
+ },
+
// A sink that writes to disk as chunks arrive, never a buffer handed over at
// the end. `auto` uses the remembered folder without a dialog, which is what
// "save automatically" means; without one, or when the person asked to be