From 00285df3486aaa194c08955f7495e1ca713a24b8 Mon Sep 17 00:00:00 2001 From: jamesgeorge007 Date: Thu, 15 Feb 2024 21:47:40 +0530 Subject: [PATCH] refactor: remove side effects from computed properties --- .../components/collections/SaveRequest.vue | 8 +- .../components/new-collections/rest/index.vue | 48 ++--- .../providers/personal.workspace.ts | 201 ++++++++---------- 3 files changed, 121 insertions(+), 136 deletions(-) diff --git a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue index c375cc18a..afcd56c8f 100644 --- a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue +++ b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue @@ -239,14 +239,14 @@ const saveRequestAs = async () => { ) if (E.isLeft(collHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_WORKSPACE_HANDLE | INVALID_COLLECTION_ID | INVALID_PATH return } const collHandle = collHandleResult.right if (collHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE + // WORKSPACE_INVALIDATED return } @@ -278,14 +278,14 @@ const saveRequestAs = async () => { ) if (E.isLeft(requestHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_COLLECTION_HANDLE | INVALID_REQUEST_ID | REQUEST_NOT_FOUND return } const requestHandle = requestHandleResult.right if (requestHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_REQUEST_HANDLE + // WORKSPACE_INVALIDATED return } 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 1b2d88c46..f70451f9d 100644 --- a/packages/hoppscotch-common/src/components/new-collections/rest/index.vue +++ b/packages/hoppscotch-common/src/components/new-collections/rest/index.vue @@ -353,14 +353,14 @@ const onRemoveRootCollection = async () => { ) if (E.isLeft(collectionHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_WORKSPACE_HANDLE | INVALID_COLLECTION_ID | INVALID_PATH return } const collectionHandle = collectionHandleResult.right if (collectionHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE + // WORKSPACE_INVALIDATED return } @@ -433,14 +433,14 @@ const onAddRequest = async (requestName: string) => { ) if (E.isLeft(collectionHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_WORKSPACE_HANDLE | INVALID_COLLECTION_ID | INVALID_PATH return } const collectionHandle = collectionHandleResult.right if (collectionHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE + // WORKSPACE_INVALIDATED return } @@ -515,14 +515,14 @@ const onAddChildCollection = async (newChildCollectionName: string) => { ) if (E.isLeft(collectionHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_WORKSPACE_HANDLE | INVALID_COLLECTION_ID | INVALID_PATH return } const collectionHandle = collectionHandleResult.right if (collectionHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE + // WORKSPACE_INVALIDATED return } @@ -565,14 +565,14 @@ const onEditRootCollection = async (newCollectionName: string) => { ) if (E.isLeft(collectionHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_WORKSPACE_HANDLE | INVALID_COLLECTION_ID | INVALID_PATH return } const collectionHandle = collectionHandleResult.right if (collectionHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE + // WORKSPACE_INVALIDATED return } @@ -610,14 +610,14 @@ const onEditChildCollection = async (newChildCollectionName: string) => { ) if (E.isLeft(collectionHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_WORKSPACE_HANDLE | INVALID_COLLECTION_ID | INVALID_PATH return } const collectionHandle = collectionHandleResult.right if (collectionHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE + // WORKSPACE_INVALIDATED return } @@ -651,14 +651,14 @@ const onRemoveChildCollection = async () => { ) if (E.isLeft(parentCollectionHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_WORKSPACE_HANDLE | INVALID_COLLECTION_ID | INVALID_PATH return } const parentCollectionHandle = parentCollectionHandleResult.right if (parentCollectionHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE + // WORKSPACE_INVALIDATED return } @@ -742,14 +742,14 @@ const onRemoveRequest = async () => { ) if (E.isLeft(requestHandleResult)) { - // INVALID_COLLECTION_HANDLE + // INVALID_COLLECTION_HANDLE | INVALID_REQUEST_ID | REQUEST_NOT_FOUND return } const requestHandle = requestHandleResult.right if (requestHandle.value.type === "invalid") { - // COLLECTION_INVALIDATED | INVALID_REQUEST_HANDLE + // COLLECTION_INVALIDATED return } @@ -819,14 +819,14 @@ const selectRequest = async (requestIndexPath: string) => { ) if (E.isLeft(requestHandleResult)) { - // INVALID_COLLECTION_HANDLE + // INVALID_COLLECTION_HANDLE | INVALID_REQUEST_ID | REQUEST_NOT_FOUND return } const requestHandle = requestHandleResult.right if (requestHandle.value.type === "invalid") { - // COLLECTION_INVALIDATED | INVALID_REQUEST_HANDLE + // COLLECTION_INVALIDATED return } @@ -883,14 +883,14 @@ const duplicateRequest = async (requestIndexPath: string) => { ) if (E.isLeft(requestHandleResult)) { - // INVALID_COLLECTION_HANDLE + // INVALID_COLLECTION_HANDLE | INVALID_REQUEST_ID | REQUEST_NOT_FOUND return } const requestHandle = requestHandleResult.right if (requestHandle.value.type === "invalid") { - // COLLECTION_INVALIDATED | INVALID_REQUEST_HANDLE + // COLLECTION_INVALIDATED return } @@ -931,14 +931,14 @@ const onEditRequest = async (newRequestName: string) => { ) if (E.isLeft(requestHandleResult)) { - // INVALID_COLLECTION_HANDLE + // INVALID_COLLECTION_HANDLE | INVALID_REQUEST_ID | REQUEST_NOT_FOUND return } const requestHandle = requestHandleResult.right if (requestHandle.value.type === "invalid") { - // COLLECTION_INVALIDATED | INVALID_REQUEST_HANDLE + // COLLECTION_INVALIDATED return } @@ -994,14 +994,14 @@ const editCollectionProperties = async (collectionIndexPath: string) => { ) if (E.isLeft(collectionHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_WORKSPACE_HANDLE | INVALID_COLLECTION_ID | INVALID_PATH return } const collectionHandle = collectionHandleResult.right if (collectionHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE + // WORKSPACE_INVALIDATED return } @@ -1059,14 +1059,14 @@ const setCollectionProperties = async (updatedCollectionProps: { ) if (E.isLeft(collectionHandleResult)) { - // INVALID_WORKSPACE_HANDLE + // INVALID_WORKSPACE_HANDLE | INVALID_COLLECTION_ID | INVALID_PATH return } const collectionHandle = collectionHandleResult.right if (collectionHandle.value.type === "invalid") { - // WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE + // WORKSPACE_INVALIDATED return } 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 bc5f95cff..8702c7664 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 @@ -104,6 +104,29 @@ export class PersonalWorkspaceProviderService return Promise.resolve(E.left("INVALID_WORKSPACE_HANDLE" as const)) } + const newCollectionName = newCollection.name as string + const newCollectionID = + this.restCollectionState.value.state.length.toString() + + const newRootCollection = makeCollection({ + name: newCollectionName, + folders: [], + requests: [], + headers: [], + auth: { + authType: "inherit", + authActive: false, + }, + }) + addRESTCollection(newRootCollection) + + platform.analytics?.logEvent({ + type: "HOPP_CREATE_COLLECTION", + platform: "rest", + workspaceType: "personal", + isRootCollection: true, + }) + return Promise.resolve( E.right( computed(() => { @@ -118,29 +141,6 @@ export class PersonalWorkspaceProviderService } } - const newCollectionName = newCollection.name as string - const newCollectionID = - this.restCollectionState.value.state.length.toString() - - const newRootCollection = makeCollection({ - name: newCollectionName, - folders: [], - requests: [], - headers: [], - auth: { - authType: "inherit", - authActive: false, - }, - }) - addRESTCollection(newRootCollection) - - platform.analytics?.logEvent({ - type: "HOPP_CREATE_COLLECTION", - platform: "rest", - workspaceType: "personal", - isRootCollection: true, - }) - return { type: "ok", data: { @@ -167,6 +167,19 @@ export class PersonalWorkspaceProviderService return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const)) } + const { collectionID, providerID, workspaceID } = + parentCollectionHandle.value.data + + const newCollectionName = newChildCollection.name as string + addRESTFolder(newCollectionName, collectionID) + + platform.analytics?.logEvent({ + type: "HOPP_CREATE_COLLECTION", + workspaceType: "personal", + isRootCollection: false, + platform: "rest", + }) + return Promise.resolve( E.right( computed(() => { @@ -181,19 +194,6 @@ export class PersonalWorkspaceProviderService } } - const { collectionID, providerID, workspaceID } = - parentCollectionHandle.value.data - - const newCollectionName = newChildCollection.name as string - addRESTFolder(newCollectionName, collectionID) - - platform.analytics?.logEvent({ - type: "HOPP_CREATE_COLLECTION", - workspaceType: "personal", - isRootCollection: false, - platform: "rest", - }) - return { type: "ok", data: { @@ -405,6 +405,34 @@ export class PersonalWorkspaceProviderService return Promise.resolve(E.left("INVALID_WORKSPACE_HANDLE" as const)) } + if (!collectionID) { + return Promise.resolve(E.left("INVALID_COLLECTION_ID" as const)) + } + + const collection = navigateToFolderWithIndexPath( + this.restCollectionState.value.state, + collectionID.split("/").map((x) => parseInt(x)) + ) + + if (!collection) { + const parentCollectionIndexPath = collectionID + .split("/") + .slice(0, -1) + .join("/") + const requestIndex = this.pathToLastIndex(collectionID) + + const parentCollection = navigateToFolderWithIndexPath( + this.restCollectionState.value.state, + parentCollectionIndexPath.split("/").map((x) => parseInt(x)) + ) + + if (!parentCollection || !parentCollection.requests[requestIndex]) { + return Promise.resolve(E.left("INVALID_PATH")) + } + } + + const { providerID, workspaceID } = workspaceHandle.value.data + return Promise.resolve( E.right( computed(() => { @@ -419,47 +447,13 @@ export class PersonalWorkspaceProviderService } } - if (!collectionID) { - return { - type: "invalid" as const, - reason: "INVALID_COLLECTION_HANDLE" as const, - } - } - - const collection = navigateToFolderWithIndexPath( - this.restCollectionState.value.state, - collectionID.split("/").map((x) => parseInt(x)) - ) - - if (!collection) { - const parentCollectionIndexPath = collectionID - .split("/") - .slice(0, -1) - .join("/") - const requestIndex = this.pathToLastIndex(collectionID) - - const parentCollection = navigateToFolderWithIndexPath( - this.restCollectionState.value.state, - parentCollectionIndexPath.split("/").map((x) => parseInt(x)) - ) - - if (!parentCollection || !parentCollection.requests[requestIndex]) { - return { - type: "invalid" as const, - reason: "INVALID_PATH" as const, - } - } - } - - const { providerID, workspaceID } = workspaceHandle.value.data - return { type: "ok", data: { providerID, workspaceID, collectionID, - name: collection?.name as string, + name: collection.name, }, } }) @@ -479,6 +473,34 @@ export class PersonalWorkspaceProviderService return Promise.resolve(E.left("INVALID_COLLECTION_HANDLE" as const)) } + if (!requestID) { + return Promise.resolve(E.left("INVALID_REQUEST_ID" as const)) + } + + const { providerID, workspaceID } = workspaceHandle.value.data + + const collectionID = requestID.split("/").slice(0, -1).join("/") + const requestIndexPath = requestID.split("/").slice(-1)[0] + + if (!requestIndexPath) { + return Promise.resolve(E.left("INVALID_REQUEST_ID" as const)) + } + + const requestIndex = parseInt(requestIndexPath) + + // Navigate to the collection containing the request + const collection = navigateToFolderWithIndexPath( + this.restCollectionState.value.state, + collectionID.split("/").map((x) => parseInt(x)) + ) + + // Grab the request with it's index + const request = collection?.requests[requestIndex] as HoppRESTRequest + + if (!request) { + return Promise.resolve(E.left("REQUEST_NOT_FOUND" as const)) + } + return Promise.resolve( E.right( computed(() => { @@ -493,43 +515,6 @@ export class PersonalWorkspaceProviderService } } - if (!requestID) { - return { - type: "invalid" as const, - reason: "INVALID_REQUEST_HANDLE" as const, - } - } - - const { providerID, workspaceID } = workspaceHandle.value.data - - const collectionID = requestID.split("/").slice(0, -1).join("/") - const requestIndexPath = requestID.split("/").slice(-1)[0] - - if (!requestIndexPath) { - return { - type: "invalid" as const, - reason: "INVALID_REQUEST_HANDLE" as const, - } - } - - const requestIndex = parseInt(requestIndexPath) - - // Navigate to the collection containing the request - const collection = navigateToFolderWithIndexPath( - this.restCollectionState.value.state, - collectionID.split("/").map((x) => parseInt(x)) - ) - - // Grab the request with it's index - const request = collection?.requests[requestIndex] as HoppRESTRequest - - if (!request) { - return { - type: "invalid" as const, - reason: "REQUEST_PATH_NOT_FOUND" as const, - } - } - return { type: "ok", data: {