From 7d7eb97b685a6305354923177b751359b7db6989 Mon Sep 17 00:00:00 2001 From: Pragadesh-45 Date: Thu, 23 Jan 2025 13:42:00 +0530 Subject: [PATCH 1/2] fix: add optional chaining for collection and folder UIDs in folder settings components --- .../components/FolderSettings/Headers/index.js | 18 +++++++++--------- .../components/FolderSettings/Script/index.js | 10 +++++----- .../components/FolderSettings/Tests/index.js | 6 +++--- .../FolderSettings/Vars/VarsTable/index.js | 18 +++++++++--------- .../components/FolderSettings/Vars/index.js | 2 +- .../RenameCollectionItem/index.js | 2 +- 6 files changed, 28 insertions(+), 28 deletions(-) diff --git a/packages/bruno-app/src/components/FolderSettings/Headers/index.js b/packages/bruno-app/src/components/FolderSettings/Headers/index.js index 0f6e05f1fa..fcb764413c 100644 --- a/packages/bruno-app/src/components/FolderSettings/Headers/index.js +++ b/packages/bruno-app/src/components/FolderSettings/Headers/index.js @@ -19,13 +19,13 @@ const Headers = ({ collection, folder }) => { const addHeader = () => { dispatch( addFolderHeader({ - collectionUid: collection.uid, - folderUid: folder.uid + collectionUid: collection?.uid, + folderUid: folder?.uid }) ); }; - const handleSave = () => dispatch(saveFolderRoot(collection.uid, folder.uid)); + const handleSave = () => dispatch(saveFolderRoot(collection?.uid, folder?.uid)); const handleHeaderValueChange = (e, _header, type) => { const header = cloneDeep(_header); switch (type) { @@ -45,8 +45,8 @@ const Headers = ({ collection, folder }) => { dispatch( updateFolderHeader({ header: header, - collectionUid: collection.uid, - folderUid: folder.uid + collectionUid: collection?.uid, + folderUid: folder?.uid }) ); }; @@ -54,9 +54,9 @@ const Headers = ({ collection, folder }) => { const handleRemoveHeader = (header) => { dispatch( deleteFolderHeader({ - headerUid: header.uid, - collectionUid: collection.uid, - folderUid: folder.uid + headerUid: header?.uid, + collectionUid: collection?.uid, + folderUid: folder?.uid }) ); }; @@ -78,7 +78,7 @@ const Headers = ({ collection, folder }) => { {headers && headers.length ? headers.map((header) => { return ( - + { dispatch( updateFolderRequestScript({ script: value, - collectionUid: collection.uid, - folderUid: folder.uid + collectionUid: collection?.uid, + folderUid: folder?.uid }) ); }; @@ -29,14 +29,14 @@ const Script = ({ collection, folder }) => { dispatch( updateFolderResponseScript({ script: value, - collectionUid: collection.uid, - folderUid: folder.uid + collectionUid: collection?.uid, + folderUid: folder?.uid }) ); }; const handleSave = () => { - dispatch(saveFolderRoot(collection.uid, folder.uid)); + dispatch(saveFolderRoot(collection?.uid, folder?.uid)); }; return ( diff --git a/packages/bruno-app/src/components/FolderSettings/Tests/index.js b/packages/bruno-app/src/components/FolderSettings/Tests/index.js index 8854b06cd9..8205240967 100644 --- a/packages/bruno-app/src/components/FolderSettings/Tests/index.js +++ b/packages/bruno-app/src/components/FolderSettings/Tests/index.js @@ -18,13 +18,13 @@ const Tests = ({ collection, folder }) => { dispatch( updateFolderTests({ tests: value, - collectionUid: collection.uid, - folderUid: folder.uid + collectionUid: collection?.uid, + folderUid: folder?.uid }) ); }; - const handleSave = () => dispatch(saveFolderRoot(collection.uid, folder.uid)); + const handleSave = () => dispatch(saveFolderRoot(collection?.uid, folder?.uid)); return ( diff --git a/packages/bruno-app/src/components/FolderSettings/Vars/VarsTable/index.js b/packages/bruno-app/src/components/FolderSettings/Vars/VarsTable/index.js index 17d79629eb..b635b842f0 100644 --- a/packages/bruno-app/src/components/FolderSettings/Vars/VarsTable/index.js +++ b/packages/bruno-app/src/components/FolderSettings/Vars/VarsTable/index.js @@ -18,14 +18,14 @@ const VarsTable = ({ folder, collection, vars, varType }) => { const addVar = () => { dispatch( addFolderVar({ - collectionUid: collection.uid, - folderUid: folder.uid, + collectionUid: collection?.uid, + folderUid: folder?.uid, type: varType }) ); }; - const onSave = () => dispatch(saveFolderRoot(collection.uid, folder.uid)); + const onSave = () => dispatch(saveFolderRoot(collection?.uid, folder?.uid)); const handleVarChange = (e, v, type) => { const _var = cloneDeep(v); switch (type) { @@ -55,8 +55,8 @@ const VarsTable = ({ folder, collection, vars, varType }) => { updateFolderVar({ type: varType, var: _var, - folderUid: folder.uid, - collectionUid: collection.uid + folderUid: folder?.uid, + collectionUid: collection?.uid }) ); }; @@ -65,9 +65,9 @@ const VarsTable = ({ folder, collection, vars, varType }) => { dispatch( deleteFolderVar({ type: varType, - varUid: _var.uid, - folderUid: folder.uid, - collectionUid: collection.uid + varUid: _var?.uid, + folderUid: folder?.uid, + collectionUid: collection?.uid }) ); }; @@ -99,7 +99,7 @@ const VarsTable = ({ folder, collection, vars, varType }) => { {vars && vars.length ? vars.map((_var) => { return ( - + { const dispatch = useDispatch(); const requestVars = get(folder, 'root.request.vars.req', []); const responseVars = get(folder, 'root.request.vars.res', []); - const handleSave = () => dispatch(saveFolderRoot(collection.uid, folder.uid)); + const handleSave = () => dispatch(saveFolderRoot(collection?.uid, folder?.uid)); return (
diff --git a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/RenameCollectionItem/index.js b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/RenameCollectionItem/index.js index 04744b6d8f..f24c38b230 100644 --- a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/RenameCollectionItem/index.js +++ b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/RenameCollectionItem/index.js @@ -34,7 +34,7 @@ const RenameCollectionItem = ({ collection, item, onClose }) => { } dispatch(renameItem(values.name, item.uid, collection.uid)) .then(() => { - isFolder && dispatch(closeTabs({ tabUids: [item.uid] })); + isFolder && item?.uid && dispatch(closeTabs({ tabUids: [item.uid] })); toast.success(isFolder ? 'Folder renamed' : 'Request renamed'); onClose(); }) From 28dc728ae17bf63a64eb13352b878a9417639145 Mon Sep 17 00:00:00 2001 From: Pragadesh-45 Date: Thu, 23 Jan 2025 15:53:06 +0530 Subject: [PATCH 2/2] feat: add closeTabs action and success toast for moving folders and requests in collections --- .../Collections/Collection/CollectionItem/index.js | 11 +++++++++-- .../Sidebar/Collections/Collection/index.js | 12 ++++++++++-- 2 files changed, 19 insertions(+), 4 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 ed402825d4..0761b212d8 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 @@ -5,7 +5,7 @@ import classnames from 'classnames'; 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 { addTab, closeTabs, focusTab } from 'providers/ReduxStore/slices/tabs'; import { moveItem, sendRequest } from 'providers/ReduxStore/slices/collections/actions'; import { collectionFolderClicked } from 'providers/ReduxStore/slices/collections'; import Dropdown from 'components/Dropdown'; @@ -53,7 +53,14 @@ const CollectionItem = ({ item, collection, searchText }) => { accept: `COLLECTION_ITEM_${collection.uid}`, drop: (draggedItem) => { if (draggedItem.uid !== item.uid) { - dispatch(moveItem(collection.uid, draggedItem.uid, item.uid)); + dispatch(moveItem(collection.uid, draggedItem.uid, item.uid)).then(() => { + if (isItemAFolder(draggedItem)) { + dispatch(closeTabs({ tabUids: [draggedItem.uid] })); + toast.success('Folder moved!'); + } else { + toast.success('Request moved!'); + } + }); } }, canDrop: (draggedItem) => { diff --git a/packages/bruno-app/src/components/Sidebar/Collections/Collection/index.js b/packages/bruno-app/src/components/Sidebar/Collections/Collection/index.js index 61dd8b6ed7..ef1e9fb7cc 100644 --- a/packages/bruno-app/src/components/Sidebar/Collections/Collection/index.js +++ b/packages/bruno-app/src/components/Sidebar/Collections/Collection/index.js @@ -8,7 +8,7 @@ import Dropdown from 'components/Dropdown'; import { collectionClicked } from 'providers/ReduxStore/slices/collections'; import { moveItemToRootOfCollection } from 'providers/ReduxStore/slices/collections/actions'; import { useDispatch } from 'react-redux'; -import { addTab } from 'providers/ReduxStore/slices/tabs'; +import { addTab, closeTabs } from 'providers/ReduxStore/slices/tabs'; import NewRequest from 'components/Sidebar/NewRequest'; import NewFolder from 'components/Sidebar/NewFolder'; import CollectionItem from './CollectionItem'; @@ -16,6 +16,7 @@ import RemoveCollection from './RemoveCollection'; import ExportCollection from './ExportCollection'; import { doesCollectionHaveItemsMatchingSearchText } from 'utils/collections/search'; import { isItemAFolder, isItemARequest, transformCollectionToSaveToExportAsFile } from 'utils/collections'; +import { toast } from 'react-hot-toast'; import exportCollection from 'utils/collections/export'; import RenameCollection from './RenameCollection'; @@ -103,7 +104,14 @@ const Collection = ({ collection, searchText }) => { const [{ isOver }, drop] = useDrop({ accept: `COLLECTION_ITEM_${collection.uid}`, drop: (draggedItem) => { - dispatch(moveItemToRootOfCollection(collection.uid, draggedItem.uid)); + dispatch(moveItemToRootOfCollection(collection.uid, draggedItem.uid)).then(() => { + if (isItemAFolder(draggedItem)) { + dispatch(closeTabs({ tabUids: [draggedItem.uid] })); + toast.success('Folder moved!'); + } else { + toast.success('Request moved!'); + } + }); }, canDrop: (draggedItem) => { // todo need to make sure that draggedItem belongs to the collection