diff --git a/packages/hoppscotch-common/src/components/new-collections/rest/Request.vue b/packages/hoppscotch-common/src/components/new-collections/rest/Request.vue
index 7e07cda57..4314f5157 100644
--- a/packages/hoppscotch-common/src/components/new-collections/rest/Request.vue
+++ b/packages/hoppscotch-common/src/components/new-collections/rest/Request.vue
@@ -104,7 +104,7 @@
:shortcut="['⌫']"
@click="
() => {
- emit('remove-request')
+ emit('remove-request', requestView.requestID)
hide()
}
"
@@ -145,7 +145,7 @@ const emit = defineEmits<{
requestName: string
}
): void
- (event: "remove-request"): void
+ (event: "remove-request", requestIndexPath: string): void
(event: "select-request", requestIndexPath: string): void
}>()
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 cc92c308b..218950504 100644
--- a/packages/hoppscotch-common/src/components/new-collections/rest/index.vue
+++ b/packages/hoppscotch-common/src/components/new-collections/rest/index.vue
@@ -49,7 +49,7 @@
:request-view="node.data.value"
@duplicate-request="duplicateRequest"
@edit-request="editRequest"
- @remove-request="removeRequest(node.data.value.requestID)"
+ @remove-request="removeRequest"
@select-request="selectRequest"
/>
@@ -142,13 +142,14 @@ import {
cascadeParentCollectionForHeaderAuth,
navigateToFolderWithIndexPath,
restCollectionStore,
+ restCollections$,
saveRESTRequestAs,
} from "~/newstore/collections"
import { cloneDeep } from "lodash-es"
import { HoppCollection, HoppRESTAuth, HoppRESTRequest } from "@hoppscotch/data"
import { TeamCollection } from "~/helpers/backend/graphql"
import { HoppInheritedProperty } from "~/helpers/types/HoppInheritedProperties"
-import { useStreamStatic } from "~/composables/stream"
+import { useReadonlyStream } from "~/composables/stream"
import { updateInheritedPropertiesForAffectedRequests } from "~/helpers/collection/collection"
const t = useI18n()
@@ -165,6 +166,8 @@ defineEmits<{
}>()
const workspaceService = useService(NewWorkspaceService)
+const restCollectionState = useReadonlyStream(restCollections$, [])
+
const treeAdapter = markRaw(
new WorkspaceRESTCollectionTreeAdapter(
props.workspaceHandle,
@@ -249,9 +252,12 @@ const displayConfirmModal = (show: boolean) => {
const addNewRootCollection = async (name: string) => {
modalLoadingState.value = true
+ const newCollectionID = restCollectionState.value.length.toString()
+
const result = await workspaceService.createRESTRootCollection(
props.workspaceHandle,
- name
+ name,
+ newCollectionID
)
if (E.isLeft(result)) {
@@ -807,16 +813,8 @@ const editCollectionProperties = async (collectionIndexPath: string) => {
return
}
- const restCollectionState = useStreamStatic(
- restCollectionStore.subject$,
- { state: [] },
- () => {
- /* noop */
- }
- )[0]
-
const collection = navigateToFolderWithIndexPath(
- restCollectionState.value.state,
+ restCollectionState.value,
collectionIndexPath.split("/").map((id) => parseInt(id))
)
diff --git a/packages/hoppscotch-common/src/services/new-workspace/index.ts b/packages/hoppscotch-common/src/services/new-workspace/index.ts
index 87170cd64..02d30b440 100644
--- a/packages/hoppscotch-common/src/services/new-workspace/index.ts
+++ b/packages/hoppscotch-common/src/services/new-workspace/index.ts
@@ -170,7 +170,8 @@ export class NewWorkspaceService extends Service {
public async createRESTRootCollection(
workspaceHandle: HandleRef,
- collectionName: string
+ collectionName: string,
+ newCollectionID: string
): Promise<
E.Either<
WorkspaceError<"INVALID_HANDLE" | "INVALID_PROVIDER">,
@@ -191,7 +192,8 @@ export class NewWorkspaceService extends Service {
const result = await provider.createRESTRootCollection(
workspaceHandle,
- collectionName
+ collectionName,
+ newCollectionID
)
if (E.isLeft(result)) {
@@ -334,7 +336,7 @@ export class NewWorkspaceService extends Service {
): Promise<
E.Either<
WorkspaceError<"INVALID_HANDLE" | "INVALID_PROVIDER">,
- HandleRef
+ HandleRef
>
> {
if (parentCollectionHandle.value.type === "invalid") {
diff --git a/packages/hoppscotch-common/src/services/new-workspace/provider.ts b/packages/hoppscotch-common/src/services/new-workspace/provider.ts
index 806e385d5..34970ffe9 100644
--- a/packages/hoppscotch-common/src/services/new-workspace/provider.ts
+++ b/packages/hoppscotch-common/src/services/new-workspace/provider.ts
@@ -39,7 +39,8 @@ export interface WorkspaceProvider {
createRESTRootCollection(
workspaceHandle: HandleRef,
- collectionName: string
+ collectionName: string,
+ newCollectionID: string
): Promise>>
createRESTChildCollection(
parentCollectionHandle: HandleRef,
@@ -59,7 +60,7 @@ export interface WorkspaceProvider {
parentCollectionHandle: HandleRef,
requestName: string,
openInNewTab: boolean
- ): Promise>>
+ ): Promise>>
updateRESTRequest(
requestHandle: HandleRef,
updatedRequest: HoppRESTRequest
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 720400583..4cf503ed8 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
@@ -96,7 +96,8 @@ export class PersonalWorkspaceProviderService
public createRESTRootCollection(
workspaceHandle: HandleRef,
- collectionName: string
+ collectionName: string,
+ newCollectionID: string
): Promise>> {
if (
workspaceHandle.value.type !== "ok" ||
@@ -144,7 +145,7 @@ export class PersonalWorkspaceProviderService
data: {
providerID: this.providerID,
workspaceID: workspaceHandle.value.data.workspaceID,
- collectionID: "", // Compute this and supply
+ collectionID: newCollectionID,
name: collectionName,
},
}
@@ -348,7 +349,7 @@ export class PersonalWorkspaceProviderService
const folderToRemove = path
? navigateToFolderWithIndexPath(
restCollectionStore.value.state,
- collectionID.split("/").map((i) => parseInt(i))
+ collectionID.split("/").map((id) => parseInt(id))
)
: undefined
@@ -381,7 +382,7 @@ export class PersonalWorkspaceProviderService
parentCollHandle: HandleRef,
requestName: string,
openInNewTab: boolean
- ): Promise>> {
+ ): Promise>> {
if (
parentCollHandle.value.type !== "ok" ||
parentCollHandle.value.data.providerID !== this.providerID ||
@@ -404,7 +405,7 @@ export class PersonalWorkspaceProviderService
}
}
- const { collectionID, providerID, workspaceID, name } =
+ const { collectionID, providerID, workspaceID } =
parentCollHandle.value.data
const newRequest = {
@@ -442,13 +443,16 @@ export class PersonalWorkspaceProviderService
platform: "rest",
})
+ const requestID = `${collectionID}/${insertionIndex}`
+
return {
type: "ok",
data: {
providerID,
workspaceID,
collectionID,
- name,
+ requestID,
+ request: newRequest,
},
}
})
@@ -498,7 +502,7 @@ export class PersonalWorkspaceProviderService
const requestToRemove = navigateToFolderWithIndexPath(
restCollectionStore.value.state,
- collectionID.split("/").map((i) => parseInt(i))
+ collectionID.split("/").map((id) => parseInt(id))
)?.requests[requestIndex]
removeRESTRequest(collectionID, requestIndex, requestToRemove?.id)