refactor: consider request handles with tab saveContext resolution for collection move/reorder actions

This commit is contained in:
jamesgeorge007
2024-04-30 14:16:28 +05:30
parent 3a195711a4
commit fe3adeeb17
3 changed files with 63 additions and 39 deletions

View File

@@ -1708,6 +1708,17 @@ const dropRequest = async (payload: {
// If there is a tab attached to this request, update the document `inheritedProperties`
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 = {
auth,
headers,

View File

@@ -9,6 +9,8 @@ import { runGQLQuery } from "../backend/GQLClient"
import { GetSingleRequestDocument } from "../backend/graphql"
import { HoppInheritedProperty } from "../types/HoppInheritedProperties"
import { getAffectedIndexes } from "./affectedIndex"
import { WorkspaceRequest } from "~/services/new-workspace/workspace"
import { HandleRef } from "~/services/new-workspace/handle"
/**
* Resolve save context on reorder
@@ -74,10 +76,17 @@ export function resolveSaveContextOnCollectionReorder(
return false
}
const collectionID = tab.document.saveContext.requestID
.split("/")
.slice(0, -1)
.join("/")
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("/")
return affectedPaths.has(collectionID)
})
@@ -91,20 +100,34 @@ export function resolveSaveContextOnCollectionReorder(
}
if (
tab.value.document.saveContext?.originLocation ===
tab.value.document.saveContext?.originLocation !==
"workspace-user-collection"
) {
const collectionID = tab.value.document.saveContext.requestID
.split("/")
.slice(0, -1)
.join("/")
return false
}
const newCollectionID = affectedPaths.get(collectionID)
const newRequestID = `${newCollectionID}/${
tab.value.document.saveContext.requestID.split("/").slice(-1)[0]
}`
const requestHandle = tab.value.document.saveContext.requestHandle as
| HandleRef<WorkspaceRequest>["value"]
| 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 (
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 requestIndex = requestID.split("/").slice(-1)[0]
@@ -162,6 +193,12 @@ export function updateSaveContextForAffectedRequests(
...tab.document.saveContext,
requestID: newRequestID,
}
requestHandle.data = {
...requestHandle.data,
collectionID: newCollectionID,
requestID: newRequestID,
}
}
}
}

View File

@@ -626,30 +626,6 @@ export class PersonalWorkspaceProviderService
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))
}