Merge pull request #5722 from Skewnart/fix/reorder-items-when-deleting

fix: Reorder items when deleting request or directory
This commit is contained in:
Bijin A B
2025-11-13 17:09:33 +05:30
committed by GitHub
2 changed files with 22 additions and 3 deletions

View File

@@ -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

View File

@@ -921,12 +921,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));
}
@@ -934,6 +935,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));
};