From d70d5bdb162e867ad61aeb4e470e14c15227451b Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Sat, 24 Feb 2024 17:37:12 +0530 Subject: [PATCH] refactor: eliminate `collectionID` from tab `saveContext` Collection ID can be inferred from request ID by removing last index from the path. --- .../components/collections/SaveRequest.vue | 8 +- .../components/new-collections/rest/index.vue | 30 ++----- .../src/helpers/collection/collection.ts | 90 ++++++++++++------- .../src/helpers/collection/request.ts | 23 +++-- .../src/helpers/rest/document.ts | 5 -- .../persistence/validation-schemas/index.ts | 1 - 6 files changed, 77 insertions(+), 80 deletions(-) diff --git a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue index edae3fd07..3800123e4 100644 --- a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue +++ b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue @@ -267,8 +267,7 @@ const saveRequestAs = async () => { return } - const { collectionID, providerID, requestID, workspaceID } = - requestHandle.value.data + const { providerID, requestID, workspaceID } = requestHandle.value.data RESTTabs.currentActiveTab.value.document = { request: updatedRequest, @@ -277,7 +276,6 @@ const saveRequestAs = async () => { originLocation: "workspace-user-collection", workspaceID, providerID, - collectionID, requestID, }, } @@ -314,8 +312,7 @@ const saveRequestAs = async () => { return } - const { collectionID, providerID, requestID, workspaceID } = - requestHandle.value.data + const { providerID, requestID, workspaceID } = requestHandle.value.data RESTTabs.currentActiveTab.value.document = { request: updatedRequest, @@ -324,7 +321,6 @@ const saveRequestAs = async () => { originLocation: "workspace-user-collection", workspaceID, providerID, - collectionID, requestID, }, } 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 ccd483135..48e45f64a 100644 --- a/packages/hoppscotch-common/src/components/new-collections/rest/index.vue +++ b/packages/hoppscotch-common/src/components/new-collections/rest/index.vue @@ -723,8 +723,7 @@ const onAddRequest = async (requestName: string) => { const { auth, headers } = cascadingAuthHeadersHandle.value.data - const { collectionID, providerID, requestID, workspaceID } = - requestHandle.value.data + const { providerID, requestID, workspaceID } = requestHandle.value.data tabs.createNewTab({ request: newRequest, @@ -733,7 +732,6 @@ const onAddRequest = async (requestName: string) => { originLocation: "workspace-user-collection", workspaceID, providerID, - collectionID, requestID, }, inheritedProperties: { @@ -972,15 +970,13 @@ const onRemoveRequest = async () => { return } - const { collectionID, providerID, requestID, workspaceID } = - requestHandle.value.data + const { providerID, requestID, workspaceID } = requestHandle.value.data const possibleTab = tabs.getTabRefWithSaveContext({ originLocation: "workspace-user-collection", workspaceID, providerID, requestID, - collectionID, }) if ( @@ -1074,15 +1070,13 @@ const selectRequest = async (requestIndexPath: string) => { const { auth, headers } = cascadingAuthHeadersHandle.value.data - const { collectionID, providerID, requestID, workspaceID } = - requestHandle.value.data + const { providerID, requestID, workspaceID } = requestHandle.value.data // If there is a request with this save context, switch into it const possibleTab = tabs.getTabRefWithSaveContext({ originLocation: "workspace-user-collection", workspaceID, providerID, - collectionID, requestID, }) @@ -1097,7 +1091,6 @@ const selectRequest = async (requestIndexPath: string) => { originLocation: "workspace-user-collection", workspaceID, providerID, - collectionID, requestID, }, inheritedProperties: { @@ -1185,13 +1178,12 @@ const onEditRequest = async (newRequestName: string) => { return } - const { collectionID, providerID, workspaceID } = requestHandle.value.data + const { providerID, workspaceID } = requestHandle.value.data const possibleActiveTab = tabs.getTabRefWithSaveContext({ originLocation: "workspace-user-collection", workspaceID, providerID, - collectionID, requestID, }) @@ -1630,20 +1622,17 @@ const dropRequest = async (payload: { const { auth, headers } = cascadingAuthHeadersHandle.value.data - const { collectionID, providerID, requestID, workspaceID } = - requestHandle.value.data + const { providerID, requestID, workspaceID } = requestHandle.value.data const possibleTab = tabs.getTabRefWithSaveContext({ originLocation: "workspace-user-collection", workspaceID, providerID, - collectionID, requestID, }) // If there is a tab attached to this request, update its save context if (possibleTab) { - const newCollectionID = destinationCollectionIndex const newRequestID = `${destinationCollectionIndex}/${( getRequestsByPath(restCollectionState.value, destinationCollectionIndex) .length - 1 @@ -1653,7 +1642,6 @@ const dropRequest = async (payload: { originLocation: "workspace-user-collection", workspaceID, providerID, - collectionID: newCollectionID, requestID: newRequestID, } @@ -2144,11 +2132,6 @@ const pathToIndex = (path: string) => { return pathArr } -const pathToLastIndex = (path: string) => { - const pathArr = pathToIndex(path) - return parseInt(pathArr[pathArr.length - 1]) -} - const resolveConfirmModal = (title: string | null) => { if (title === `${t("confirm.remove_collection")}`) { onRemoveRootCollection() @@ -2197,11 +2180,8 @@ const updateSaveContextForAffectedRequests = ( tab.document.saveContext = { ...tab.document.saveContext, - collectionID: newCollectionID, requestID: newRequestID, } - - console.log(`${t("request.moved")}: ${requestID} -> ${newRequestID}`) } } } diff --git a/packages/hoppscotch-common/src/helpers/collection/collection.ts b/packages/hoppscotch-common/src/helpers/collection/collection.ts index 814c3ec32..661e90fd0 100644 --- a/packages/hoppscotch-common/src/helpers/collection/collection.ts +++ b/packages/hoppscotch-common/src/helpers/collection/collection.ts @@ -68,11 +68,18 @@ export function resolveSaveContextOnCollectionReorder( return affectedPaths.has(tab.document.saveContext.folderPath) } - return ( - tab.document.saveContext?.originLocation === - "workspace-user-collection" && - affectedPaths.has(tab.document.saveContext.collectionID) - ) + if ( + tab.document.saveContext?.originLocation !== "workspace-user-collection" + ) { + return false + } + + const collectionID = tab.document.saveContext.requestID + .split("/") + .slice(0, -1) + .join("/") + + return affectedPaths.has(collectionID) }) for (const tab of tabs) { @@ -87,14 +94,16 @@ export function resolveSaveContextOnCollectionReorder( tab.value.document.saveContext?.originLocation === "workspace-user-collection" ) { - const newCollectionID = affectedPaths.get( - tab.value.document.saveContext?.collectionID - )! + const collectionID = tab.value.document.saveContext.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.collectionID = newCollectionID tab.value.document.saveContext.requestID = newRequestID } } @@ -117,11 +126,18 @@ export function updateSaveContextForAffectedRequests( return tab.document.saveContext.folderPath.startsWith(oldFolderPath) } - return ( - tab.document.saveContext?.originLocation === - "workspace-user-collection" && - tab.document.saveContext.collectionID.startsWith(oldFolderPath) - ) + if ( + tab.document.saveContext?.originLocation !== "workspace-user-collection" + ) { + return false + } + + const collectionID = tab.document.saveContext.requestID + .split("/") + .slice(0, -1) + .join("/") + + return collectionID.startsWith(oldFolderPath) }) for (const tab of tabs) { @@ -139,18 +155,18 @@ export function updateSaveContextForAffectedRequests( tab.value.document.saveContext?.originLocation === "workspace-user-collection" ) { - const newCollectionID = - tab.value.document.saveContext.collectionID.replace( - oldFolderPath, - newFolderPath - ) + const collectionID = tab.value.document.saveContext.requestID + .split("/") + .slice(0, -1) + .join("/") + + const newCollectionID = collectionID.replace(oldFolderPath, newFolderPath) const newRequestID = `${newCollectionID}/${ tab.value.document.saveContext.requestID.split("/").slice(-1)[0] }` tab.value.document.saveContext = { ...tab.value.document.saveContext, - collectionID: newCollectionID, requestID: newRequestID, } } @@ -230,11 +246,12 @@ export function updateInheritedPropertiesForAffectedRequests( return Boolean(tab.document.saveContext.collectionID?.startsWith(path)) } - return ( - tab.document.saveContext?.originLocation === - "workspace-user-collection" && - tab.document.saveContext.collectionID?.startsWith(path) - ) + const collectionID = tab.document.saveContext?.requestID + .split("/") + .slice(0, -1) + .join("/") + + return Boolean(collectionID?.startsWith(path)) }) const tabsEffectedByAuth = tabs.filter((tab) => { @@ -257,15 +274,13 @@ export function updateInheritedPropertiesForAffectedRequests( return false } - const { collectionID } = tab.value.document.saveContext - return ( - collectionID.startsWith(path) && + tab.value.document.saveContext.folderPath.startsWith(path) && path === folderPathCloseToSaveContext( tab.value.document.inheritedProperties?.auth.parentID, path, - collectionID + tab.value.document.saveContext.folderPath ) ) }) @@ -330,11 +345,18 @@ function resetSaveContextForAffectedRequests(folderPath: string) { return tab.document.saveContext.folderPath.startsWith(folderPath) } - return ( - tab.document.saveContext?.originLocation === - "workspace-user-collection" && - tab.document.saveContext.collectionID.startsWith(folderPath) - ) + if ( + tab.document.saveContext?.originLocation !== "workspace-user-collection" + ) { + return false + } + + const collectionID = tab.document.saveContext.requestID + .split("/") + .slice(0, -1) + .join("/") + + return collectionID.startsWith(folderPath) }) for (const tab of tabs) { diff --git a/packages/hoppscotch-common/src/helpers/collection/request.ts b/packages/hoppscotch-common/src/helpers/collection/request.ts index 642c37bb0..83af6a88e 100644 --- a/packages/hoppscotch-common/src/helpers/collection/request.ts +++ b/packages/hoppscotch-common/src/helpers/collection/request.ts @@ -46,14 +46,17 @@ export function resolveSaveContextOnRequestReorder(payload: { ) } - return ( - tab.document.saveContext?.originLocation === - "workspace-user-collection" && - tab.document.saveContext.collectionID === folderPath && - affectedIndexes.has( - parseInt(tab.document.saveContext.requestID.split("/").slice(-1)[0]) - ) - ) + if ( + tab.document.saveContext?.originLocation !== "workspace-user-collection" + ) { + return false + } + + const { requestID } = tab.document.saveContext + const collectionID = requestID.split("/").slice(0, -1).join("/") + const requestIndex = parseInt(requestID.split("/").slice(-1)[0]) + + return collectionID === folderPath && affectedIndexes.has(requestIndex) }) for (const tab of tabs) { @@ -68,11 +71,13 @@ export function resolveSaveContextOnRequestReorder(payload: { tab.value.document.saveContext?.originLocation === "workspace-user-collection" ) { - const requestID = tab.value.document.saveContext.requestID + const { requestID } = tab.value.document.saveContext + const requestIDArray = requestID.split("/") const requestIndex = affectedIndexes.get( parseInt(requestIDArray[requestIDArray.length - 1]) )! + requestIDArray[requestIDArray.length - 1] = requestIndex.toString() tab.value.document.saveContext.requestID = requestIDArray.join("/") } diff --git a/packages/hoppscotch-common/src/helpers/rest/document.ts b/packages/hoppscotch-common/src/helpers/rest/document.ts index 26ac7fcde..bc48cb0c1 100644 --- a/packages/hoppscotch-common/src/helpers/rest/document.ts +++ b/packages/hoppscotch-common/src/helpers/rest/document.ts @@ -21,11 +21,6 @@ export type HoppRESTSaveContext = */ providerID: string - /** - * ID of the collection - */ - collectionID: string - /** * Path to the request in the collection tree */ diff --git a/packages/hoppscotch-common/src/services/persistence/validation-schemas/index.ts b/packages/hoppscotch-common/src/services/persistence/validation-schemas/index.ts index 7dd8d972a..94f613713 100644 --- a/packages/hoppscotch-common/src/services/persistence/validation-schemas/index.ts +++ b/packages/hoppscotch-common/src/services/persistence/validation-schemas/index.ts @@ -497,7 +497,6 @@ const HoppRESTSaveContextSchema = z.nullable( originLocation: z.literal("workspace-user-collection"), workspaceID: z.string(), providerID: z.string(), - collectionID: z.string(), requestID: z.string(), }) .strict(),