refactor: update provider method signature

This commit is contained in:
jamesgeorge007
2024-02-10 12:46:14 +05:30
parent a0e373a4f3
commit 2c47a63ca0
4 changed files with 44 additions and 38 deletions

View File

@@ -19,17 +19,22 @@ export type HoppInheritedProperty = {
}
type ModifiedAuth<T, AuthType> = {
[K in keyof T]: K extends 'inheritedAuth' ? Extract<T[K], AuthType> : T[K]
[K in keyof T]: K extends "inheritedAuth" ? Extract<T[K], AuthType> : T[K]
}
type ModifiedHeaders<T, HeaderType> = {
[K in keyof T]: K extends 'inheritedHeader' ? Extract<T[K], HeaderType> : T[K]
[K in keyof T]: K extends "inheritedHeader" ? Extract<T[K], HeaderType> : T[K]
}
type ModifiedHoppInheritedProperty<AuthType, HeaderType> = {
auth: ModifiedAuth<HoppInheritedProperty['auth'], AuthType>
headers: ModifiedHeaders<HoppInheritedProperty['headers'][number], HeaderType>[]
auth: ModifiedAuth<HoppInheritedProperty["auth"], AuthType>
headers: ModifiedHeaders<
HoppInheritedProperty["headers"][number],
HeaderType
>[]
}
export type HoppInheritedRESTProperty = ModifiedHoppInheritedProperty<HoppRESTAuth, HoppRESTHeader>
export type HoppInheritedRESTProperty = ModifiedHoppInheritedProperty<
HoppRESTAuth,
HoppRESTHeader
>

View File

@@ -12,7 +12,11 @@ import { WorkspaceProvider } from "./provider"
import { HandleRef } from "./handle"
import * as E from "fp-ts/Either"
import { Workspace, WorkspaceCollection, WorkspaceRequest } from "./workspace"
import { RESTCollectionChildrenView, RESTCollectionLevelAuthHeadersView, RootRESTCollectionView } from "./view"
import {
RESTCollectionChildrenView,
RESTCollectionLevelAuthHeadersView,
RootRESTCollectionView,
} from "./view"
import { HoppCollection, HoppRESTRequest } from "@hoppscotch/data"
export type WorkspaceError<ServiceErr> =
@@ -353,10 +357,7 @@ export class NewWorkspaceService extends Service {
requestHandle: HandleRef<WorkspaceRequest>,
updatedRequest: Partial<HoppRESTRequest>
): Promise<
E.Either<
WorkspaceError<"INVALID_HANDLE" | "INVALID_PROVIDER">,
HandleRef<boolean>["value"]
>
E.Either<WorkspaceError<"INVALID_HANDLE" | "INVALID_PROVIDER">, void>
> {
if (requestHandle.value.type === "invalid") {
return E.left({ type: "SERVICE_ERROR", error: "INVALID_HANDLE" })

View File

@@ -63,7 +63,7 @@ export interface WorkspaceProvider {
updateRESTRequest(
requestHandle: HandleRef<WorkspaceRequest>,
updatedRequest: Partial<HoppRESTRequest>
): Promise<E.Either<unknown, HandleRef<boolean>["value"]>>
): Promise<E.Either<unknown, void>>
removeRESTRequest(
requestHandle: HandleRef<WorkspaceRequest>
): Promise<E.Either<unknown, void>>

View File

@@ -389,7 +389,7 @@ export class PersonalWorkspaceProviderService
public updateRESTRequest(
requestHandle: HandleRef<WorkspaceRequest>,
updatedRequest: Partial<HoppRESTRequest>
): Promise<E.Either<unknown, HandleRef<boolean>["value"]>> {
): Promise<E.Either<unknown, void>> {
if (
requestHandle.value.type !== "ok" ||
requestHandle.value.data.providerID !== this.providerID ||
@@ -400,32 +400,18 @@ export class PersonalWorkspaceProviderService
const { collectionID, requestID, request } = requestHandle.value.data
try {
const newRequest: HoppRESTRequest = merge(request, updatedRequest)
const requestIndex = parseInt(requestID)
editRESTRequest(collectionID, requestIndex, newRequest)
const newRequest: HoppRESTRequest = merge(request, updatedRequest)
const requestIndex = parseInt(requestID)
editRESTRequest(collectionID, requestIndex, newRequest)
platform.analytics?.logEvent({
type: "HOPP_SAVE_REQUEST",
platform: "rest",
createdNow: false,
workspaceType: "personal",
})
} catch (err) {
return Promise.resolve(
E.right({
type: "invalid" as const,
reason: "REQUEST_PATH_NOT_FOUND" as const,
})
)
}
platform.analytics?.logEvent({
type: "HOPP_SAVE_REQUEST",
platform: "rest",
createdNow: false,
workspaceType: "personal",
})
return Promise.resolve(
E.right({
type: "ok",
data: true,
})
)
return Promise.resolve(E.right(undefined))
}
public getCollectionHandle(
@@ -464,7 +450,14 @@ export class PersonalWorkspaceProviderService
const collection = navigateToFolderWithIndexPath(
this.restCollectionState.value.state,
collectionID.split("/").map((x) => parseInt(x))
) as HoppCollection
)
if (!collection) {
return {
type: "invalid" as const,
reason: "COLLECTION_PATH_NOT_FOUND" as const,
}
}
const { providerID, workspaceID } = workspaceHandle.value.data
@@ -538,6 +531,13 @@ export class PersonalWorkspaceProviderService
// 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: {