Skip to content

Commit

Permalink
refactor: move more things to handles instead of handleref
Browse files Browse the repository at this point in the history
  • Loading branch information
AndrewBastin committed May 8, 2024
1 parent bc976af commit 7a2276e
Show file tree
Hide file tree
Showing 17 changed files with 413 additions and 334 deletions.
6 changes: 4 additions & 2 deletions packages/hoppscotch-common/src/components/app/Header.vue
Original file line number Diff line number Diff line change
Expand Up @@ -373,8 +373,10 @@ watch(
const newWorkspaceService = useService(NewWorkspaceService)
const activeWorkspaceName = computed(() => {
if (newWorkspaceService.activeWorkspaceHandle.value?.value.type === "ok") {
return newWorkspaceService.activeWorkspaceHandle.value?.value.data.name
const activeWorkspaceHandleRef = newWorkspaceService.activeWorkspaceHandle.value?.get()
if (activeWorkspaceHandleRef?.value.type === "ok") {
return activeWorkspaceHandleRef.value.data.name
}
return t("workspace.no_workspace")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,11 +244,6 @@ const saveRequestAs = async () => {
const collectionHandle = collectionHandleResult.right
if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED
return
}
const requestHandleResult = await workspaceService.createRESTRequest(
collectionHandle,
updatedRequest
Expand Down
13 changes: 5 additions & 8 deletions packages/hoppscotch-common/src/components/http/RequestTab.vue
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,6 @@ import { useVModel } from "@vueuse/core"
import { cloneDeep, isEqual } from "lodash-es"
import { HoppTab } from "~/services/tab"
import { HoppRESTDocument } from "~/helpers/rest/document"
import { WorkspaceRequest } from "~/services/new-workspace/workspace"
import { HandleRef } from "~/services/new-workspace/handle"
// TODO: Move Response and Request execution code to over here
Expand All @@ -43,24 +41,23 @@ watch(
tab.value.document.saveContext?.originLocation ===
"workspace-user-collection"
) {
const requestHandle = tab.value.document.saveContext.requestHandle as
| HandleRef<WorkspaceRequest>["value"]
| undefined
const requestHandleRef =
tab.value.document.saveContext.requestHandle?.get()
if (!requestHandle || requestHandle.type === "invalid") {
if (!requestHandleRef || requestHandleRef.value.type === "invalid") {
return
}
if (
!tab.value.document.isDirty &&
!isEqual(oldRequest, requestHandle?.data.request)
!isEqual(oldRequest, requestHandleRef?.value.data.request)
) {
tab.value.document.isDirty = true
}
if (
tab.value.document.isDirty &&
isEqual(oldRequest, requestHandle?.data.request)
isEqual(oldRequest, requestHandleRef?.value.data.request)
) {
tab.value.document.isDirty = false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -514,7 +514,7 @@ import { platform } from "~/platform"
import { NewWorkspaceService } from "~/services/new-workspace"
import { HandleRef } from "~/services/new-workspace/handle"
import { RESTCollectionViewRequest } from "~/services/new-workspace/view"
import { Workspace, WorkspaceRequest } from "~/services/new-workspace/workspace"
import { Workspace } from "~/services/new-workspace/workspace"
import { RESTTabService } from "~/services/tab/rest"
import IconImport from "~icons/lucide/folder-down"
import IconHelpCircle from "~icons/lucide/help-circle"
Expand Down Expand Up @@ -1110,12 +1110,7 @@ const selectRequest = async (requestIndexPath: string) => {
return
}
const collectionHandle = collectionHandleResult.right.get()
if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE
return
}
const collectionHandle = collectionHandleResult.right
const requestHandleResult = await workspaceService.getRequestHandle(
props.workspaceHandle,
Expand All @@ -1127,12 +1122,7 @@ const selectRequest = async (requestIndexPath: string) => {
return
}
const requestHandle = requestHandleResult.right.get()
if (requestHandle.value.type === "invalid") {
// COLLECTION_INVALIDATED
return
}
const requestHandle = requestHandleResult.right
const cascadingAuthHeadersHandleResult =
await workspaceService.getRESTCollectionLevelAuthHeadersView(
Expand Down Expand Up @@ -1163,9 +1153,11 @@ const selectRequest = async (requestIndexPath: string) => {
if (possibleTab) {
tabs.setActiveTab(possibleTab.value.id)
} else {
const requestHandleRef = requestHandle.get()
// If not, open the request in a new tab
tabs.createNewTab({
request: requestHandle.value.data.request,
request: requestHandleRef.value.data.request,
isDirty: false,
saveContext: {
originLocation: "workspace-user-collection",
Expand Down Expand Up @@ -1640,12 +1632,7 @@ const dropRequest = async (payload: {
return
}
const requestHandle = requestHandleResult.right.get()
if (requestHandle.value.type === "invalid") {
// COLLECTION_INVALIDATED
return
}
const requestHandle = requestHandleResult.right
const result = await workspaceService.moveRESTRequest(
requestHandle,
Expand All @@ -1667,12 +1654,7 @@ const dropRequest = async (payload: {
return
}
const collectionHandle = collectionHandleResult.right.get()
if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED
return
}
const collectionHandle = collectionHandleResult.right
const cascadingAuthHeadersHandleResult =
await workspaceService.getRESTCollectionLevelAuthHeadersView(
Expand Down Expand Up @@ -2098,18 +2080,20 @@ const isActiveRequest = (requestView: RESTCollectionViewRequest) => {
return false
}
// TODO: Investigate why requestHandle is available unwrapped here
const requestHandle = tabs.currentActiveTab.value.document.saveContext
.requestHandle as HandleRef<WorkspaceRequest>["value"] | undefined
const requestHandle =
tabs.currentActiveTab.value.document.saveContext.requestHandle
if (!requestHandle) {
return false
}
if (requestHandle.type === "invalid") {
const requestHandleRef = requestHandle.get()
if (requestHandleRef.value.type === "invalid") {
return false
}
return requestHandle.data.requestID === requestView.requestID
return requestHandleRef.value.data.requestID === requestView.requestID
}
const onSelectPick = (payload: Picked | null) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,10 @@ const workspaceService = useService(NewWorkspaceService)
const activeWorkspaceHandle = workspaceService.activeWorkspaceHandle

const workspaceName = computed(() => {
if (activeWorkspaceHandle.value?.value.type === "ok") {
return activeWorkspaceHandle.value.value.data.name
const activeWorkspaceHandleRef = activeWorkspaceHandle.value?.get()

if (activeWorkspaceHandleRef?.value.type === "ok") {
return activeWorkspaceHandleRef.value.data.name
}

return undefined
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,13 @@ const personalWorkspaceProviderService = useService(
)
const activeWorkspaceInfo = computed(() => {
const activeWorkspace = workspaceService.activeWorkspaceHandle.value
const activeWorkspaceHandleRef =
workspaceService.activeWorkspaceHandle.value?.get()
if (activeWorkspace?.value.type === "ok") {
if (activeWorkspaceHandleRef?.value.type === "ok") {
return {
provider: activeWorkspace.value.data.providerID,
workspaceID: activeWorkspace.value.data.workspaceID,
provider: activeWorkspaceHandleRef.value.data.providerID,
workspaceID: activeWorkspaceHandleRef.value.data.workspaceID,
}
}
Expand All @@ -48,6 +49,6 @@ const activeWorkspaceInfo = computed(() => {
function selectWorkspace() {
workspaceService.activeWorkspaceHandle.value =
personalWorkspaceProviderService.getPersonalWorkspaceHandle().get()
personalWorkspaceProviderService.getPersonalWorkspaceHandle()
}
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,13 @@ const testWorkspaceProviderService = useService(TestWorkspaceProviderService)
const candidates = testWorkspaceProviderService.getWorkspaceCandidates()
const activeWorkspaceInfo = computed(() => {
const activeWorkspace = workspaceService.activeWorkspaceHandle.value
const activeWorkspaceHandle = workspaceService.activeWorkspaceHandle.value
const activeWorkspaceHandleRef = activeWorkspaceHandle?.get()
if (activeWorkspace?.value.type === "ok") {
if (activeWorkspaceHandleRef?.value.type === "ok") {
return {
provider: activeWorkspace.value.data.providerID,
workspaceID: activeWorkspace.value.data.workspaceID,
provider: activeWorkspaceHandleRef.value.data.providerID,
workspaceID: activeWorkspaceHandleRef.value.data.workspaceID,
}
}
Expand All @@ -59,6 +60,6 @@ async function selectWorkspace(workspaceID: string) {
return
}
workspaceService.activeWorkspaceHandle.value = result.right.get()
workspaceService.activeWorkspaceHandle.value = result.right
}
</script>
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,25 @@ import {
import * as E from "fp-ts/Either"
import { Ref, ref, watchEffect } from "vue"
import { NewWorkspaceService } from "~/services/new-workspace"
import { HandleRef } from "~/services/new-workspace/handle"
import { Handle } from "~/services/new-workspace/handle"
import { RESTCollectionViewItem } from "~/services/new-workspace/view"
import { Workspace } from "~/services/new-workspace/workspace"

export class WorkspaceRESTCollectionTreeAdapter
implements SmartTreeAdapter<RESTCollectionViewItem>
{
constructor(
private workspaceHandle: HandleRef<Workspace>,
private workspaceHandle: Handle<Workspace>,
private workspaceService: NewWorkspaceService
) {}

public getChildren(
nodeID: string | null,
nodeType?: string
): Ref<ChildrenResult<RESTCollectionViewItem>> {
if (this.workspaceHandle.value.type !== "ok") {
const workspaceHandleRef = this.workspaceHandle.get()

if (workspaceHandleRef.value.type !== "ok") {
throw new Error("Cannot issue children with invalid workspace handle")
}

Expand Down Expand Up @@ -50,7 +52,7 @@ export class WorkspaceRESTCollectionTreeAdapter
throw new Error(JSON.stringify(collectionHandleResult.left.error))
}

const collectionHandle = collectionHandleResult.right.get()
const collectionHandle = collectionHandleResult.right

const collectionChildrenResult =
await this.workspaceService.getRESTCollectionChildrenView(
Expand Down
Loading

0 comments on commit 7a2276e

Please sign in to comment.