Browse Source

refactor: leverage helpers

jamesgeorge007 1 year ago
parent
commit
110f90eeda

+ 48 - 0
packages/hoppscotch-common/src/services/new-workspace/helpers.ts

@@ -0,0 +1,48 @@
+import { Ref } from "vue"
+import { HandleRef } from "./handle"
+import { Workspace, WorkspaceCollection, WorkspaceRequest } from "./workspace"
+
+export const isValidWorkspaceHandle = (
+  workspace: HandleRef<Workspace>,
+  providerID: string,
+  workspaceID: string
+): workspace is Ref<{
+  data: Workspace
+  type: "ok"
+}> => {
+  return (
+    workspace.value.type === "ok" &&
+    workspace.value.data.providerID === providerID &&
+    workspace.value.data.workspaceID === workspaceID
+  )
+}
+
+export const isValidCollectionHandle = (
+  collection: HandleRef<WorkspaceCollection>,
+  providerID: string,
+  workspaceID: string
+): collection is Ref<{
+  data: WorkspaceCollection
+  type: "ok"
+}> => {
+  return (
+    collection.value.type === "ok" &&
+    collection.value.data.providerID === providerID &&
+    collection.value.data.workspaceID === workspaceID
+  )
+}
+
+export const isValidRequestHandle = (
+  request: HandleRef<WorkspaceRequest>,
+  providerID: string,
+  workspaceID: string
+): request is Ref<{
+  data: WorkspaceRequest
+  type: "ok"
+}> => {
+  return (
+    request.value.type === "ok" &&
+    request.value.data.providerID === providerID &&
+    request.value.data.workspaceID === workspaceID
+  )
+}

+ 81 - 104
packages/hoppscotch-common/src/services/new-workspace/providers/personal.workspace.ts

@@ -1,6 +1,5 @@
 import {
   HoppCollection,
-  HoppGQLAuth,
   HoppRESTAuth,
   HoppRESTHeaders,
   makeCollection,
@@ -59,11 +58,15 @@ import {
 import { HoppRESTRequest } from "@hoppscotch/data"
 import { merge } from "lodash-es"
 import path from "path"
-import { HoppGQLHeader } from "~/helpers/graphql"
 import { initializeDownloadFile } from "~/helpers/import-export/export"
 import { HoppInheritedProperty } from "~/helpers/types/HoppInheritedProperties"
 import IconUser from "~icons/lucide/user"
 import { NewWorkspaceService } from ".."
+import {
+  isValidCollectionHandle,
+  isValidRequestHandle,
+  isValidWorkspaceHandle,
+} from "../helpers"
 
 export class PersonalWorkspaceProviderService
   extends Service
@@ -111,11 +114,7 @@ export class PersonalWorkspaceProviderService
     workspaceHandle: HandleRef<Workspace>,
     newCollection: Partial<HoppCollection>
   ): Promise<E.Either<unknown, HandleRef<WorkspaceCollection>>> {
-    if (
-      workspaceHandle.value.type !== "ok" ||
-      workspaceHandle.value.data.providerID !== this.providerID ||
-      workspaceHandle.value.data.workspaceID !== "personal"
-    ) {
+    if (!isValidWorkspaceHandle(workspaceHandle, this.providerID, "personal")) {
       return Promise.resolve(E.left("INVALID_WORKSPACE_HANDLE" as const))
     }
 
@@ -146,9 +145,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            workspaceHandle.value.type !== "ok" ||
-            workspaceHandle.value.data.providerID !== this.providerID ||
-            workspaceHandle.value.data.workspaceID !== "personal"
+            !isValidWorkspaceHandle(
+              workspaceHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,
@@ -175,9 +176,11 @@ export class PersonalWorkspaceProviderService
     newChildCollection: Partial<HoppCollection>
   ): Promise<E.Either<unknown, HandleRef<WorkspaceCollection>>> {
     if (
-      parentCollectionHandle.value.type !== "ok" ||
-      parentCollectionHandle.value.data.providerID !== this.providerID ||
-      parentCollectionHandle.value.data.workspaceID !== "personal"
+      !isValidCollectionHandle(
+        parentCollectionHandle,
+        this.providerID,
+        "personal"
+      )
     ) {
       return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const))
     }
@@ -199,9 +202,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            parentCollectionHandle.value.type !== "ok" ||
-            parentCollectionHandle.value.data.providerID !== this.providerID ||
-            parentCollectionHandle.value.data.workspaceID !== "personal"
+            !isValidCollectionHandle(
+              parentCollectionHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,
@@ -228,9 +233,7 @@ export class PersonalWorkspaceProviderService
     updatedCollection: Partial<HoppCollection>
   ): Promise<E.Either<unknown, void>> {
     if (
-      collectionHandle.value.type !== "ok" ||
-      collectionHandle.value.data.providerID !== this.providerID ||
-      collectionHandle.value.data.workspaceID !== "personal"
+      !isValidCollectionHandle(collectionHandle, this.providerID, "personal")
     ) {
       return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const))
     }
@@ -259,9 +262,7 @@ export class PersonalWorkspaceProviderService
     collectionHandle: HandleRef<WorkspaceCollection>
   ): Promise<E.Either<unknown, void>> {
     if (
-      collectionHandle.value.type !== "ok" ||
-      collectionHandle.value.data.providerID !== this.providerID ||
-      collectionHandle.value.data.workspaceID !== "personal"
+      !isValidCollectionHandle(collectionHandle, this.providerID, "personal")
     ) {
       return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const))
     }
@@ -304,9 +305,11 @@ export class PersonalWorkspaceProviderService
     newRequest: HoppRESTRequest
   ): Promise<E.Either<unknown, HandleRef<WorkspaceRequest>>> {
     if (
-      parentCollectionHandle.value.type !== "ok" ||
-      parentCollectionHandle.value.data.providerID !== this.providerID ||
-      parentCollectionHandle.value.data.workspaceID !== "personal"
+      !isValidCollectionHandle(
+        parentCollectionHandle,
+        this.providerID,
+        "personal"
+      )
     ) {
       return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const))
     }
@@ -329,9 +332,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            parentCollectionHandle.value.type !== "ok" ||
-            parentCollectionHandle.value.data.providerID !== this.providerID ||
-            parentCollectionHandle.value.data.workspaceID !== "personal"
+            !isValidCollectionHandle(
+              parentCollectionHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,
@@ -357,11 +362,7 @@ export class PersonalWorkspaceProviderService
   public removeRESTRequest(
     requestHandle: HandleRef<WorkspaceRequest>
   ): Promise<E.Either<unknown, void>> {
-    if (
-      requestHandle.value.type !== "ok" ||
-      requestHandle.value.data.providerID !== this.providerID ||
-      requestHandle.value.data.workspaceID !== "personal"
-    ) {
+    if (!isValidRequestHandle(requestHandle, this.providerID, "personal")) {
       return Promise.resolve(E.left("INVALID_REQUEST_HANDLE" as const))
     }
 
@@ -382,11 +383,7 @@ export class PersonalWorkspaceProviderService
     requestHandle: HandleRef<WorkspaceRequest>,
     updatedRequest: Partial<HoppRESTRequest>
   ): Promise<E.Either<unknown, void>> {
-    if (
-      requestHandle.value.type !== "ok" ||
-      requestHandle.value.data.providerID !== this.providerID ||
-      requestHandle.value.data.workspaceID !== "personal"
-    ) {
+    if (!isValidRequestHandle(requestHandle, this.providerID, "personal")) {
       return Promise.resolve(E.left("INVALID_REQUEST_HANDLE" as const))
     }
 
@@ -412,11 +409,7 @@ export class PersonalWorkspaceProviderService
     workspaceHandle: HandleRef<Workspace>,
     collections: HoppCollection[]
   ): Promise<E.Either<unknown, HandleRef<WorkspaceCollection>>> {
-    if (
-      workspaceHandle.value.type !== "ok" ||
-      workspaceHandle.value.data.providerID !== this.providerID ||
-      workspaceHandle.value.data.workspaceID !== "personal"
-    ) {
+    if (!isValidWorkspaceHandle(workspaceHandle, this.providerID, "personal")) {
       return Promise.resolve(E.left("INVALID_WORKSPACE_HANDLE" as const))
     }
 
@@ -430,9 +423,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            workspaceHandle.value.type !== "ok" ||
-            workspaceHandle.value.data.providerID !== this.providerID ||
-            workspaceHandle.value.data.workspaceID !== "personal"
+            !isValidWorkspaceHandle(
+              workspaceHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,
@@ -458,11 +453,7 @@ export class PersonalWorkspaceProviderService
     workspaceHandle: HandleRef<WorkspaceCollection>,
     collections: HoppCollection[]
   ): Promise<E.Either<unknown, void>> {
-    if (
-      workspaceHandle.value.type !== "ok" ||
-      workspaceHandle.value.data.providerID !== this.providerID ||
-      workspaceHandle.value.data.workspaceID !== "personal"
-    ) {
+    if (!isValidWorkspaceHandle(workspaceHandle, this.providerID, "personal")) {
       return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const))
     }
 
@@ -476,9 +467,7 @@ export class PersonalWorkspaceProviderService
     collection: HoppCollection
   ): Promise<E.Either<unknown, void>> {
     if (
-      collectionHandle.value.type !== "ok" ||
-      collectionHandle.value.data.providerID !== this.providerID ||
-      collectionHandle.value.data.workspaceID !== "personal"
+      !isValidCollectionHandle(collectionHandle, this.providerID, "personal")
     ) {
       return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const))
     }
@@ -493,9 +482,7 @@ export class PersonalWorkspaceProviderService
     destinationCollectionID: string | null
   ): Promise<E.Either<unknown, void>> {
     if (
-      collectionHandle.value.type !== "ok" ||
-      collectionHandle.value.data.providerID !== this.providerID ||
-      collectionHandle.value.data.workspaceID !== "personal"
+      !isValidCollectionHandle(collectionHandle, this.providerID, "personal")
     ) {
       return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const))
     }
@@ -512,9 +499,7 @@ export class PersonalWorkspaceProviderService
     destinationCollectionID: string | null
   ): Promise<E.Either<unknown, void>> {
     if (
-      collectionHandle.value.type !== "ok" ||
-      collectionHandle.value.data.providerID !== this.providerID ||
-      collectionHandle.value.data.workspaceID !== "personal"
+      !isValidCollectionHandle(collectionHandle, this.providerID, "personal")
     ) {
       return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const))
     }
@@ -532,11 +517,7 @@ export class PersonalWorkspaceProviderService
     destinationCollectionID: string,
     destinationRequestID: string | null
   ): Promise<E.Either<unknown, void>> {
-    if (
-      requestHandle.value.type !== "ok" ||
-      requestHandle.value.data.providerID !== this.providerID ||
-      requestHandle.value.data.workspaceID !== "personal"
-    ) {
+    if (!isValidRequestHandle(requestHandle, this.providerID, "personal")) {
       return Promise.resolve(E.left("INVALID_REQUEST_HANDLE" as const))
     }
 
@@ -555,11 +536,7 @@ export class PersonalWorkspaceProviderService
     requestHandle: HandleRef<WorkspaceRequest>,
     destinationCollectionID: string
   ): Promise<E.Either<unknown, void>> {
-    if (
-      requestHandle.value.type !== "ok" ||
-      requestHandle.value.data.providerID !== this.providerID ||
-      requestHandle.value.data.workspaceID !== "personal"
-    ) {
+    if (!isValidRequestHandle(requestHandle, this.providerID, "personal")) {
       return Promise.resolve(E.left("INVALID_REQUEST_HANDLE" as const))
     }
 
@@ -582,11 +559,7 @@ export class PersonalWorkspaceProviderService
     workspaceHandle: HandleRef<Workspace>,
     collectionID: string
   ): Promise<E.Either<unknown, HandleRef<WorkspaceCollection>>> {
-    if (
-      workspaceHandle.value.type !== "ok" ||
-      workspaceHandle.value.data.providerID !== this.providerID ||
-      workspaceHandle.value.data.workspaceID !== "personal"
-    ) {
+    if (!isValidWorkspaceHandle(workspaceHandle, this.providerID, "personal")) {
       return Promise.resolve(E.left("INVALID_WORKSPACE_HANDLE" as const))
     }
 
@@ -622,9 +595,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            workspaceHandle.value.type !== "ok" ||
-            workspaceHandle.value.data.providerID !== this.providerID ||
-            workspaceHandle.value.data.workspaceID !== "personal"
+            !isValidWorkspaceHandle(
+              workspaceHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,
@@ -650,11 +625,7 @@ export class PersonalWorkspaceProviderService
     workspaceHandle: HandleRef<Workspace>,
     requestID: string
   ): Promise<E.Either<unknown, HandleRef<WorkspaceRequest>>> {
-    if (
-      workspaceHandle.value.type !== "ok" ||
-      workspaceHandle.value.data.providerID !== this.providerID ||
-      workspaceHandle.value.data.workspaceID !== "personal"
-    ) {
+    if (!isValidWorkspaceHandle(workspaceHandle, this.providerID, "personal")) {
       return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const))
     }
 
@@ -690,9 +661,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            workspaceHandle.value.type !== "ok" ||
-            workspaceHandle.value.data.providerID !== this.providerID ||
-            workspaceHandle.value.data.workspaceID !== "personal"
+            !isValidWorkspaceHandle(
+              workspaceHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,
@@ -722,9 +695,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            collectionHandle.value.type === "invalid" ||
-            collectionHandle.value.data.providerID !== this.providerID ||
-            collectionHandle.value.data.workspaceID !== "personal"
+            !isValidCollectionHandle(
+              collectionHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,
@@ -803,9 +778,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            workspaceHandle.value.type === "invalid" ||
-            workspaceHandle.value.data.providerID !== this.providerID ||
-            workspaceHandle.value.data.workspaceID !== "personal"
+            !isValidWorkspaceHandle(
+              workspaceHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,
@@ -846,9 +823,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            collectionHandle.value.type === "invalid" ||
-            collectionHandle.value.data.providerID !== this.providerID ||
-            collectionHandle.value.data.workspaceID !== "personal"
+            !isValidCollectionHandle(
+              collectionHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,
@@ -891,12 +870,8 @@ export class PersonalWorkspaceProviderService
               return { type: "ok", data: { auth, headers } }
             }
 
-            const parentFolderAuth = parentFolder.auth as
-              | HoppRESTAuth
-              | HoppGQLAuth
-            const parentFolderHeaders = parentFolder.headers as
-              | HoppRESTHeaders
-              | HoppGQLHeader[]
+            const parentFolderAuth: HoppRESTAuth = parentFolder.auth
+            const parentFolderHeaders: HoppRESTHeaders = parentFolder.headers
 
             // check if the parent folder has authType 'inherit' and if it is the root folder
             if (
@@ -1044,9 +1019,11 @@ export class PersonalWorkspaceProviderService
       E.right(
         computed(() => {
           if (
-            workspaceHandle.value.type === "invalid" ||
-            workspaceHandle.value.data.providerID !== this.providerID ||
-            workspaceHandle.value.data.workspaceID !== "personal"
+            !isValidWorkspaceHandle(
+              workspaceHandle,
+              this.providerID,
+              "personal"
+            )
           ) {
             return {
               type: "invalid" as const,