diff --git a/packages/hoppscotch-common/src/services/new-workspace/helpers.ts b/packages/hoppscotch-common/src/services/new-workspace/helpers.ts new file mode 100644 index 000000000..8d3135f1d --- /dev/null +++ b/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, + 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, + 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, + 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 + ) +} 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 3a50ce857..5e483c53e 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 @@ -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, newCollection: Partial ): Promise>> { - 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 ): Promise>> { 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 ): Promise> { 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 ): Promise> { 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>> { 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 ): Promise> { - 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, updatedRequest: Partial ): Promise> { - 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, collections: HoppCollection[] ): Promise>> { - 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, collections: HoppCollection[] ): Promise> { - 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> { 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> { 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> { 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> { - 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, destinationCollectionID: string ): Promise> { - 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, collectionID: string ): Promise>> { - 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, requestID: string ): Promise>> { - 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,