diff --git a/packages/hoppscotch-common/src/components/new-collections/rest/index.vue b/packages/hoppscotch-common/src/components/new-collections/rest/index.vue index a647afaff..86f47f52a 100644 --- a/packages/hoppscotch-common/src/components/new-collections/rest/index.vue +++ b/packages/hoppscotch-common/src/components/new-collections/rest/index.vue @@ -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, diff --git a/packages/hoppscotch-common/src/helpers/collection/collection.ts b/packages/hoppscotch-common/src/helpers/collection/collection.ts index ee6eed346..3ee43a2e2 100644 --- a/packages/hoppscotch-common/src/helpers/collection/collection.ts +++ b/packages/hoppscotch-common/src/helpers/collection/collection.ts @@ -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["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["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["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, + } } } } diff --git a/packages/hoppscotch-common/src/services/new-workspace/providers/personal.workspace.ts b/packages/hoppscotch-common/src/services/new-workspace/providers/personal.workspace.ts index ef8c03f68..c9169f495 100644 --- a/packages/hoppscotch-common/src/services/new-workspace/providers/personal.workspace.ts +++ b/packages/hoppscotch-common/src/services/new-workspace/providers/personal.workspace.ts @@ -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)) }