refactor: consider request handles with tab saveContext resolution for collection move/reorder actions
This commit is contained in:
@@ -1708,6 +1708,17 @@ const dropRequest = async (payload: {
|
|||||||
|
|
||||||
// If there is a tab attached to this request, update the document `inheritedProperties`
|
// If there is a tab attached to this request, update the document `inheritedProperties`
|
||||||
if (possibleTab) {
|
if (possibleTab) {
|
||||||
|
// @ts-expect-error - Updating the handle
|
||||||
|
possibleTab.value.document.saveContext.requestHandle.data = {
|
||||||
|
// @ts-expect-error - Updating the handle
|
||||||
|
...possibleTab.value.document.saveContext.requestHandle.data,
|
||||||
|
collectionID: destinationCollectionIndex,
|
||||||
|
requestID: `${destinationCollectionIndex}/${(
|
||||||
|
getRequestsByPath(restCollectionState.value, destinationCollectionIndex)
|
||||||
|
.length - 1
|
||||||
|
).toString()}`,
|
||||||
|
}
|
||||||
|
|
||||||
possibleTab.value.document.inheritedProperties = {
|
possibleTab.value.document.inheritedProperties = {
|
||||||
auth,
|
auth,
|
||||||
headers,
|
headers,
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import { runGQLQuery } from "../backend/GQLClient"
|
|||||||
import { GetSingleRequestDocument } from "../backend/graphql"
|
import { GetSingleRequestDocument } from "../backend/graphql"
|
||||||
import { HoppInheritedProperty } from "../types/HoppInheritedProperties"
|
import { HoppInheritedProperty } from "../types/HoppInheritedProperties"
|
||||||
import { getAffectedIndexes } from "./affectedIndex"
|
import { getAffectedIndexes } from "./affectedIndex"
|
||||||
|
import { WorkspaceRequest } from "~/services/new-workspace/workspace"
|
||||||
|
import { HandleRef } from "~/services/new-workspace/handle"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resolve save context on reorder
|
* Resolve save context on reorder
|
||||||
@@ -74,10 +76,17 @@ export function resolveSaveContextOnCollectionReorder(
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
const collectionID = tab.document.saveContext.requestID
|
const requestHandle = tab.document.saveContext.requestHandle as
|
||||||
.split("/")
|
| HandleRef<WorkspaceRequest>["value"]
|
||||||
.slice(0, -1)
|
| undefined
|
||||||
.join("/")
|
|
||||||
|
if (!requestHandle || requestHandle.type === "invalid") {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
const { requestID } = requestHandle.data
|
||||||
|
|
||||||
|
const collectionID = requestID.split("/").slice(0, -1).join("/")
|
||||||
|
|
||||||
return affectedPaths.has(collectionID)
|
return affectedPaths.has(collectionID)
|
||||||
})
|
})
|
||||||
@@ -91,20 +100,34 @@ export function resolveSaveContextOnCollectionReorder(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
tab.value.document.saveContext?.originLocation ===
|
tab.value.document.saveContext?.originLocation !==
|
||||||
"workspace-user-collection"
|
"workspace-user-collection"
|
||||||
) {
|
) {
|
||||||
const collectionID = tab.value.document.saveContext.requestID
|
return false
|
||||||
.split("/")
|
}
|
||||||
.slice(0, -1)
|
|
||||||
.join("/")
|
|
||||||
|
|
||||||
const newCollectionID = affectedPaths.get(collectionID)
|
const requestHandle = tab.value.document.saveContext.requestHandle as
|
||||||
const newRequestID = `${newCollectionID}/${
|
| HandleRef<WorkspaceRequest>["value"]
|
||||||
tab.value.document.saveContext.requestID.split("/").slice(-1)[0]
|
| undefined
|
||||||
}`
|
|
||||||
|
|
||||||
tab.value.document.saveContext.requestID = newRequestID
|
if (!requestHandle || requestHandle.type === "invalid") {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
const { requestID } = requestHandle.data
|
||||||
|
|
||||||
|
const collectionID = requestID.split("/").slice(0, -1).join("/")
|
||||||
|
|
||||||
|
const newCollectionID = affectedPaths.get(collectionID)
|
||||||
|
const newRequestID = `${newCollectionID}/${
|
||||||
|
tab.value.document.saveContext.requestID.split("/").slice(-1)[0]
|
||||||
|
}`
|
||||||
|
|
||||||
|
tab.value.document.saveContext.requestID = newRequestID
|
||||||
|
requestHandle.data = {
|
||||||
|
...requestHandle.data,
|
||||||
|
collectionID: newCollectionID!,
|
||||||
|
requestID: newRequestID,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -146,7 +169,15 @@ export function updateSaveContextForAffectedRequests(
|
|||||||
if (
|
if (
|
||||||
tab.document.saveContext?.originLocation === "workspace-user-collection"
|
tab.document.saveContext?.originLocation === "workspace-user-collection"
|
||||||
) {
|
) {
|
||||||
const { requestID } = tab.document.saveContext
|
const requestHandle = tab.document.saveContext.requestHandle as
|
||||||
|
| HandleRef<WorkspaceRequest>["value"]
|
||||||
|
| undefined
|
||||||
|
|
||||||
|
if (!requestHandle || requestHandle.type === "invalid") {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
const { requestID } = requestHandle.data
|
||||||
|
|
||||||
const collectionID = requestID.split("/").slice(0, -1).join("/")
|
const collectionID = requestID.split("/").slice(0, -1).join("/")
|
||||||
const requestIndex = requestID.split("/").slice(-1)[0]
|
const requestIndex = requestID.split("/").slice(-1)[0]
|
||||||
@@ -162,6 +193,12 @@ export function updateSaveContextForAffectedRequests(
|
|||||||
...tab.document.saveContext,
|
...tab.document.saveContext,
|
||||||
requestID: newRequestID,
|
requestID: newRequestID,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
requestHandle.data = {
|
||||||
|
...requestHandle.data,
|
||||||
|
collectionID: newCollectionID,
|
||||||
|
requestID: newRequestID,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -626,30 +626,6 @@ export class PersonalWorkspaceProviderService
|
|||||||
destinationCollectionID
|
destinationCollectionID
|
||||||
)
|
)
|
||||||
|
|
||||||
for (const [idx, handle] of this.issuedHandles.entries()) {
|
|
||||||
if (handle.value.type === "invalid") continue
|
|
||||||
|
|
||||||
if ("requestID" in handle.value.data) {
|
|
||||||
if (
|
|
||||||
handle.value.data.requestID === requestHandle.value.data.requestID
|
|
||||||
) {
|
|
||||||
const destinationRequestID = `${destinationCollectionID}/${(
|
|
||||||
getRequestsByPath(
|
|
||||||
this.restCollectionState.value.state,
|
|
||||||
destinationCollectionID
|
|
||||||
).length - 1
|
|
||||||
).toString()}`
|
|
||||||
|
|
||||||
// @ts-expect-error - We're updating the request handle data
|
|
||||||
this.issuedHandles[idx].value.data.collectionID =
|
|
||||||
destinationCollectionID
|
|
||||||
|
|
||||||
// @ts-expect-error - We're updating the request handle data
|
|
||||||
this.issuedHandles[idx].value.data.requestID = destinationRequestID
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Promise.resolve(E.right(undefined))
|
return Promise.resolve(E.right(undefined))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user