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

View File

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

View File

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