Browse Source

refactor: eliminate `collectionID` from tab `saveContext`

Collection ID can be inferred from request ID by removing last index from the path.
jamesgeorge007 1 year ago
parent
commit
0f2a1351b7

+ 2 - 6
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,
       },
     }

+ 5 - 25
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}`)
       }
     }
   }

+ 56 - 34
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) {

+ 14 - 9
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("/")
     }

+ 0 - 5
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
        */

+ 0 - 1
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(),