fix: reorder request and directory when deleting item

This commit is contained in:
skewnart
2025-10-06 23:35:28 +02:00
committed by Bijin Bruno
parent 23843bb621
commit f50a79c22b
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

@@ -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));
};