From b51f8109a208b9c3b5a7e81bcc9abd52eb6be3ae Mon Sep 17 00:00:00 2001 From: ramki-bruno Date: Mon, 13 Jan 2025 19:30:55 +0530 Subject: [PATCH] Review changes and minor-refactoring in `Reveal in Finder` feature --- .../Collection/CollectionItem/index.js | 29 ++++++++------- .../ReduxStore/slices/collections/actions.js | 6 ++-- packages/bruno-electron/src/ipc/collection.js | 36 ++++--------------- 3 files changed, 22 insertions(+), 49 deletions(-) diff --git a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/index.js b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/index.js index b840885de..2bfece171 100644 --- a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/index.js +++ b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/index.js @@ -6,7 +6,7 @@ import { useDrag, useDrop } from 'react-dnd'; import { IconChevronRight, IconDots } from '@tabler/icons'; import { useSelector, useDispatch } from 'react-redux'; import { addTab, focusTab } from 'providers/ReduxStore/slices/tabs'; -import { moveItem, revealInFinder, sendRequest } from 'providers/ReduxStore/slices/collections/actions'; +import { moveItem, showInFolder, sendRequest } from 'providers/ReduxStore/slices/collections/actions'; import { collectionFolderClicked } from 'providers/ReduxStore/slices/collections'; import Dropdown from 'components/Dropdown'; import NewRequest from 'components/Sidebar/NewRequest'; @@ -220,9 +220,10 @@ const CollectionItem = ({ item, collection, searchText }) => { } }; - const handleReveal = () => { - dispatch(revealInFinder(item.pathname)).catch((error) => { - toast.error('Error revealing file:', error); + const handleShowInFolder = () => { + dispatch(showInFolder(item.pathname)).catch((error) => { + console.error('Error opening the folder', error); + toast.error('Error opening the folder'); }); }; @@ -377,17 +378,15 @@ const CollectionItem = ({ item, collection, searchText }) => { Generate Code )} - {!isFolder && ( -
{ - dropdownTippyRef.current.hide(); - handleReveal(); - }} - > - Reveal in Finder -
- )} +
{ + dropdownTippyRef.current.hide(); + handleShowInFolder(); + }} + > + Show in Folder +
{ diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js b/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js index 513c2f798..cc53b3339 100644 --- a/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js +++ b/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js @@ -1220,11 +1220,9 @@ export const mountCollection = ({ collectionUid, collectionPathname, brunoConfig }); }; - export const revealInFinder = (collectionPath) => () => { + export const showInFolder = (collectionPath) => () => { return new Promise((resolve, reject) => { const { ipcRenderer } = window; - - ipcRenderer.invoke('renderer:reveal-in-finder', collectionPath).then(resolve).catch(reject); + ipcRenderer.invoke('renderer:show-in-folder', collectionPath).then(resolve).catch(reject); }); }; - diff --git a/packages/bruno-electron/src/ipc/collection.js b/packages/bruno-electron/src/ipc/collection.js index f04b49619..c7454c113 100644 --- a/packages/bruno-electron/src/ipc/collection.js +++ b/packages/bruno-electron/src/ipc/collection.js @@ -3,7 +3,6 @@ const fs = require('fs'); const fsExtra = require('fs-extra'); const os = require('os'); const path = require('path'); -const { exec } = require('child_process'); const { ipcMain, shell, dialog, app } = require('electron'); const { envJsonToBru, bruToJson, jsonToBruViaWorker, jsonToCollectionBru, bruToJsonViaWorker } = require('../bru'); @@ -911,40 +910,17 @@ const registerRendererEventHandlers = (mainWindow, watcher, lastOpenedCollection watcher.addWatcher(mainWindow, collectionPathname, collectionUid, brunoConfig, false, shouldLoadCollectionAsync); }); - ipcMain.handle('renderer:reveal-in-finder', async (event, filePath) => { + ipcMain.handle('renderer:show-in-folder', async (event, filePath) => { try { if (!filePath) { - throw new Error('File path is required.'); + throw new Error('File path is required'); } - - const resolvedPath = path.resolve(filePath); - - if (!fs.existsSync(resolvedPath)) { - throw new Error('The specified file does not exist.'); - } - - console.log(process.platform, "process.platform") - - switch (process.platform) { - case 'darwin': // macOS - shell.showItemInFolder(resolvedPath); - break; - case 'win32': // Windows - shell.showItemInFolder(resolvedPath); - break; - case 'linux': // Linux - exec(`xdg-open "${resolvedPath}"`); - break; - default: - throw new Error('Unsupported platform.'); - } - - return { success: true }; + shell.showItemInFolder(filePath); } catch (error) { - console.error('Error in reveal-in-finder:', error); - return { success: false, message: error.message }; + console.error('Error in show-in-folder: ', error); + throw error; } - }); + }); }; const registerMainEventHandlers = (mainWindow, watcher, lastOpenedCollections) => {