refactor: leverage helpers

This commit is contained in:
jamesgeorge007
2024-02-27 16:04:04 +05:30
parent 116f2fd279
commit f87a4c81d8
2 changed files with 129 additions and 104 deletions

View File

@@ -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
)
}

View File

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