refactor: tab saveContext resolution post collection remove action
This commit is contained in:
@@ -1812,18 +1812,15 @@ const dropCollection = async (payload: {
|
|||||||
: resolvedDestinationCollectionIndex
|
: resolvedDestinationCollectionIndex
|
||||||
}
|
}
|
||||||
|
|
||||||
resolveSaveContextOnCollectionReorder(
|
resolveSaveContextOnCollectionReorder({
|
||||||
{
|
lastIndex: pathToLastIndex(draggedCollectionIndex),
|
||||||
lastIndex: pathToLastIndex(draggedCollectionIndex),
|
newIndex: -1,
|
||||||
newIndex: -1,
|
folderPath: draggedParentCollectionIndex,
|
||||||
folderPath: draggedParentCollectionIndex,
|
length: getFoldersByPath(
|
||||||
length: getFoldersByPath(
|
restCollectionState.value,
|
||||||
restCollectionState.value,
|
draggedParentCollectionIndex
|
||||||
draggedParentCollectionIndex
|
).length,
|
||||||
).length,
|
})
|
||||||
},
|
|
||||||
"drop"
|
|
||||||
)
|
|
||||||
|
|
||||||
updateSaveContextForAffectedRequests(
|
updateSaveContextForAffectedRequests(
|
||||||
draggedCollectionIndex,
|
draggedCollectionIndex,
|
||||||
|
|||||||
@@ -22,15 +22,12 @@ import { HandleRef } from "~/services/new-workspace/handle"
|
|||||||
* @returns
|
* @returns
|
||||||
*/
|
*/
|
||||||
|
|
||||||
export function resolveSaveContextOnCollectionReorder(
|
export function resolveSaveContextOnCollectionReorder(payload: {
|
||||||
payload: {
|
lastIndex: number
|
||||||
lastIndex: number
|
newIndex: number
|
||||||
newIndex: number
|
folderPath: string
|
||||||
folderPath: string
|
length?: number // better way to do this? now it could be undefined
|
||||||
length?: number // better way to do this? now it could be undefined
|
}) {
|
||||||
},
|
|
||||||
type: "remove" | "drop" = "remove"
|
|
||||||
) {
|
|
||||||
const { lastIndex, folderPath, length } = payload
|
const { lastIndex, folderPath, length } = payload
|
||||||
let { newIndex } = payload
|
let { newIndex } = payload
|
||||||
|
|
||||||
@@ -45,12 +42,6 @@ export function resolveSaveContextOnCollectionReorder(
|
|||||||
if (newIndex === -1) {
|
if (newIndex === -1) {
|
||||||
// if (newIndex === -1) remove it from the map because it will be deleted
|
// if (newIndex === -1) remove it from the map because it will be deleted
|
||||||
affectedIndexes.delete(lastIndex)
|
affectedIndexes.delete(lastIndex)
|
||||||
// when collection deleted opended requests from that collection be affected
|
|
||||||
if (type === "remove") {
|
|
||||||
resetSaveContextForAffectedRequests(
|
|
||||||
folderPath ? `${folderPath}/${lastIndex}` : lastIndex.toString()
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// add folder path as prefix to the affected indexes
|
// add folder path as prefix to the affected indexes
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ import {
|
|||||||
WorkspaceRequest,
|
WorkspaceRequest,
|
||||||
} from "~/services/new-workspace/workspace"
|
} from "~/services/new-workspace/workspace"
|
||||||
|
|
||||||
|
import {
|
||||||
|
getFoldersByPath,
|
||||||
|
resolveSaveContextOnCollectionReorder,
|
||||||
|
} from "~/helpers/collection/collection"
|
||||||
import {
|
import {
|
||||||
getRequestsByPath,
|
getRequestsByPath,
|
||||||
resolveSaveContextOnRequestReorder,
|
resolveSaveContextOnRequestReorder,
|
||||||
@@ -279,10 +283,9 @@ export class PersonalWorkspaceProviderService
|
|||||||
const { collectionID } = collectionHandle.value.data
|
const { collectionID } = collectionHandle.value.data
|
||||||
|
|
||||||
const isRootCollection = collectionID.split("/").length === 1
|
const isRootCollection = collectionID.split("/").length === 1
|
||||||
|
const collectionIndex = parseInt(collectionID)
|
||||||
|
|
||||||
if (isRootCollection) {
|
if (isRootCollection) {
|
||||||
const collectionIndex = parseInt(collectionID)
|
|
||||||
|
|
||||||
const collectionToRemove = navigateToFolderWithIndexPath(
|
const collectionToRemove = navigateToFolderWithIndexPath(
|
||||||
restCollectionStore.value.state,
|
restCollectionStore.value.state,
|
||||||
[collectionIndex]
|
[collectionIndex]
|
||||||
@@ -322,6 +325,26 @@ export class PersonalWorkspaceProviderService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isRootCollection) {
|
||||||
|
resolveSaveContextOnCollectionReorder({
|
||||||
|
lastIndex: collectionIndex,
|
||||||
|
newIndex: -1,
|
||||||
|
folderPath: "", // root folder
|
||||||
|
length: restCollectionStore.value.state.length,
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
const parentCollectionID = collectionID.split("/").slice(0, -1).join("/") // remove last folder to get parent folder
|
||||||
|
resolveSaveContextOnCollectionReorder({
|
||||||
|
lastIndex: this.pathToLastIndex(collectionID),
|
||||||
|
newIndex: -1,
|
||||||
|
folderPath: parentCollectionID,
|
||||||
|
length: getFoldersByPath(
|
||||||
|
restCollectionStore.value.state,
|
||||||
|
parentCollectionID
|
||||||
|
).length,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
return Promise.resolve(E.right(undefined))
|
return Promise.resolve(E.right(undefined))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user