diff --git a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/DeleteCollectionItem/index.js b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/DeleteCollectionItem/index.js index 3f397c78cf..7e32fdadb7 100644 --- a/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/DeleteCollectionItem/index.js +++ b/packages/bruno-app/src/components/Sidebar/Collections/Collection/CollectionItem/DeleteCollectionItem/index.js @@ -3,7 +3,7 @@ import Modal from 'components/Modal'; import { isItemAFolder } from 'utils/tabs'; import { useDispatch } from 'react-redux'; import { closeTabs } from 'providers/ReduxStore/slices/tabs'; -import { deleteItem } from 'providers/ReduxStore/slices/collections/actions'; +import { deleteItem, reorderDirectoryItems } from 'providers/ReduxStore/slices/collections/actions'; import { recursivelyGetAllItemUids } from 'utils/collections'; import StyledWrapper from './StyledWrapper'; @@ -11,7 +11,8 @@ const DeleteCollectionItem = ({ onClose, item, collectionUid }) => { const dispatch = useDispatch(); const isFolder = isItemAFolder(item); const onConfirm = () => { - dispatch(deleteItem(item.uid, collectionUid)).then(() => { + dispatch(deleteItem(item.uid, collectionUid)).then(({ parentDirectory }) => { + dispatch(reorderDirectoryItems(parentDirectory, item.uid)); if (isFolder) { // close all tabs that belong to the 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 c886dece9e..255f5eb7ae 100644 --- a/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js +++ b/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js @@ -818,12 +818,13 @@ export const deleteItem = (itemUid, collectionUid) => (dispatch, getState) => { const item = findItemInCollection(collection, itemUid); if (item) { + const parentDirectoryItem = findParentItemInCollection(collection, itemUid) || collection; const { ipcRenderer } = window; ipcRenderer .invoke('renderer:delete-item', item.pathname, item.type) .then(() => { - resolve(); + resolve({ parentDirectory: parentDirectoryItem }); }) .catch((error) => reject(error)); } @@ -831,6 +832,23 @@ export const deleteItem = (itemUid, collectionUid) => (dispatch, getState) => { }); }; +export const reorderDirectoryItems = (directory, itemUid) => (dispatch, getState) => { + if (!directory.items) return; + + const directoryItemsWithoutDeletedItem = directory.items.filter( + (i) => i.uid !== itemUid + ); + + const reorderedSourceItems = getReorderedItemsInSourceDirectory({ + items: directoryItemsWithoutDeletedItem + }); + if (reorderedSourceItems?.length) { + dispatch(updateItemsSequences({ itemsToResequence: reorderedSourceItems })); + } + + return; +} + export const sortCollections = (payload) => (dispatch) => { dispatch(_sortCollections(payload)); };