diff --git a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue
index 58227014f..0a40acb32 100644
--- a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue
+++ b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue
@@ -278,7 +278,7 @@ const saveRequestAs = async () => {
const requestHandleResult = await workspaceService.getRequestHandle(
workspaceService.activeWorkspaceHandle.value,
- picked.value.folderPath
+ `${picked.value.folderPath}/${picked.value.requestIndex.toString()}`
)
if (E.isLeft(requestHandleResult)) {
diff --git a/packages/hoppscotch-common/src/components/new-collections/rest/Collection.vue b/packages/hoppscotch-common/src/components/new-collections/rest/Collection.vue
index d98581db6..5980d829e 100644
--- a/packages/hoppscotch-common/src/components/new-collections/rest/Collection.vue
+++ b/packages/hoppscotch-common/src/components/new-collections/rest/Collection.vue
@@ -18,7 +18,7 @@
class="pointer-events-none flex min-w-0 flex-1 py-2 pr-2 transition group-hover:text-secondaryDark"
>
- {{ collectionView.collection.name }}
+ {{ collectionView.name }}
@@ -170,20 +170,20 @@ const props = defineProps<{
const emit = defineEmits<{
(event: "toggle-children"): void
- (event: "add-request", parentCollIndexPath: string): void
- (event: "add-child-collection", parentCollIndexPath: string): void
+ (event: "add-request", parentCollectionIndexPath: string): void
+ (event: "add-child-collection", parentCollectionIndexPath: string): void
(
event: "edit-root-collection",
- payload: { collIndexPath: string; collectionName: string }
+ payload: { collectionIndexPath: string; collectionName: string }
): void
(
event: "edit-child-collection",
- payload: { collIndexPath: string; collectionName: string }
+ payload: { collectionIndexPath: string; collectionName: string }
): void
- (event: "edit-collection-properties", collIndexPath: string): void
+ (event: "edit-collection-properties", collectionIndexPath: string): void
(event: "export-data"): void
- (event: "remove-root-collection", collIndexPath: string): void
- (event: "remove-child-collection", collIndexPath: string): void
+ (event: "remove-root-collection", collectionIndexPath: string): void
+ (event: "remove-child-collection", collectionIndexPath: string): void
}>()
const tippyActions = ref(null)
@@ -207,17 +207,15 @@ const addRequest = () => {
}
const editCollection = () => {
- const {
- collectionID: collIndexPath,
- collection: { name: collectionName },
- } = props.collectionView
+ const { collectionID: collectionIndexPath, name: collectionName } =
+ props.collectionView
const data = {
- collIndexPath,
+ collectionIndexPath,
collectionName,
}
- collIndexPath.split("/").length > 1
+ collectionIndexPath.split("/").length > 1
? emit("edit-child-collection", data)
: emit("edit-root-collection", data)
}
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 7d9c62a6c..cc92c308b 100644
--- a/packages/hoppscotch-common/src/components/new-collections/rest/index.vue
+++ b/packages/hoppscotch-common/src/components/new-collections/rest/index.vue
@@ -83,14 +83,14 @@
/>
("")
-const editingChildCollIndexPath = ref("")
-const editingRootCollName = ref("")
-const editingChildCollName = ref("")
+const editingCollectionIndexPath = ref("")
+const editingChildCollectionIndexPath = ref("")
+const editingRootCollectionName = ref("")
+const editingChildCollectionName = ref("")
const editingRequestName = ref("")
const editingRequestIndexPath = ref("")
@@ -269,33 +270,34 @@ const addNewRootCollection = async (name: string) => {
}
const removeRootCollection = (collPathIndex: string) => {
- editingCollIndexPath.value = collPathIndex
+ editingCollectionIndexPath.value = collPathIndex
confirmModalTitle.value = `${t("confirm.remove_collection")}`
displayConfirmModal(true)
}
const onRemoveRootCollection = async () => {
- const collIndexPath = editingCollIndexPath.value
+ const collectionIndexPath = editingCollectionIndexPath.value
- const collHandleResult = await workspaceService.getCollectionHandle(
+ const collectionHandleResult = await workspaceService.getCollectionHandle(
props.workspaceHandle,
- collIndexPath
+ collectionIndexPath
)
- if (E.isLeft(collHandleResult)) {
+ if (E.isLeft(collectionHandleResult)) {
// INVALID_WORKSPACE_HANDLE
return
}
- const collHandle = collHandleResult.right
+ const collectionHandle = collectionHandleResult.right
- if (collHandle.value.type === "invalid") {
+ if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE
return
}
- const result = await workspaceService.removeRESTRootCollection(collHandle)
+ const result =
+ await workspaceService.removeRESTRootCollection(collectionHandle)
if (E.isLeft(result)) {
// INVALID_COLLECTION_HANDLE
@@ -312,32 +314,32 @@ const onRemoveRootCollection = async () => {
}
const addRequest = (requestPathIndex: string) => {
- editingCollIndexPath.value = requestPathIndex
+ editingCollectionIndexPath.value = requestPathIndex
displayModalAddRequest(true)
}
const onAddRequest = async (requestName: string) => {
- const parentCollIndexPath = editingCollIndexPath.value
+ const parentCollectionIndexPath = editingCollectionIndexPath.value
- const collHandleResult = await workspaceService.getCollectionHandle(
+ const collectionHandleResult = await workspaceService.getCollectionHandle(
props.workspaceHandle,
- parentCollIndexPath
+ parentCollectionIndexPath
)
- if (E.isLeft(collHandleResult)) {
+ if (E.isLeft(collectionHandleResult)) {
// INVALID_WORKSPACE_HANDLE
return
}
- const collHandle = collHandleResult.right
+ const collectionHandle = collectionHandleResult.right
- if (collHandle.value.type === "invalid") {
+ if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE
return
}
const result = await workspaceService.createRESTRequest(
- collHandle,
+ collectionHandle,
requestName,
true
)
@@ -355,34 +357,34 @@ const onAddRequest = async (requestName: string) => {
displayModalAddRequest(false)
}
-const addChildCollection = (parentCollIndexPath: string) => {
- editingCollIndexPath.value = parentCollIndexPath
+const addChildCollection = (parentCollectionIndexPath: string) => {
+ editingCollectionIndexPath.value = parentCollectionIndexPath
displayModalAddChildColl(true)
}
-const onAddChildCollection = async (childCollName: string) => {
- const parentCollIndexPath = editingCollIndexPath.value
+const onAddChildCollection = async (childCollectionName: string) => {
+ const parentCollectionIndexPath = editingCollectionIndexPath.value
- const collHandleResult = await workspaceService.getCollectionHandle(
+ const collectionHandleResult = await workspaceService.getCollectionHandle(
props.workspaceHandle,
- parentCollIndexPath
+ parentCollectionIndexPath
)
- if (E.isLeft(collHandleResult)) {
+ if (E.isLeft(collectionHandleResult)) {
// INVALID_WORKSPACE_HANDLE
return
}
- const collHandle = collHandleResult.right
+ const collectionHandle = collectionHandleResult.right
- if (collHandle.value.type === "invalid") {
+ if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE
return
}
const result = await workspaceService.createRESTChildCollection(
- collHandle,
- childCollName
+ collectionHandle,
+ childCollectionName
)
if (E.isLeft(result)) {
@@ -399,40 +401,48 @@ const onAddChildCollection = async (childCollName: string) => {
}
const editRootCollection = (payload: {
- collIndexPath: string
+ collectionIndexPath: string
collectionName: string
}) => {
- const { collIndexPath, collectionName } = payload
+ const { collectionIndexPath, collectionName } = payload
- editingCollIndexPath.value = collIndexPath
- editingRootCollName.value = collectionName
+ editingCollectionIndexPath.value = collectionIndexPath
+ editingRootCollectionName.value = collectionName
displayModalEditCollection(true)
}
const onEditRootCollection = async (newCollectionName: string) => {
- const collID = editingCollIndexPath.value
+ const collectionIndexPath = editingCollectionIndexPath.value
- const collHandleResult = await workspaceService.getCollectionHandle(
+ const collectionHandleResult = await workspaceService.getCollectionHandle(
props.workspaceHandle,
- collID
+ collectionIndexPath
)
- if (E.isLeft(collHandleResult)) {
+ if (E.isLeft(collectionHandleResult)) {
// INVALID_WORKSPACE_HANDLE
return
}
- const collHandle = collHandleResult.right
+ const collectionHandle = collectionHandleResult.right
- if (collHandle.value.type === "invalid") {
+ if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE
return
}
- const result = await workspaceService.editRESTRootCollection(
- collHandle,
- newCollectionName
+ // We're sure that the collection exists in the given `collectionIndexPath` as there's a validation happening in `getCollectionHandle` above
+ const updatedCollection = navigateToFolderWithIndexPath(
+ restCollectionStore.value.state,
+ collectionIndexPath.split("/").map((id) => parseInt(id))
+ ) as HoppCollection
+
+ updatedCollection.name = newCollectionName
+
+ const result = await workspaceService.editRESTCollection(
+ collectionHandle,
+ updatedCollection
)
if (E.isLeft(result)) {
@@ -450,40 +460,48 @@ const onEditRootCollection = async (newCollectionName: string) => {
}
const editChildCollection = (payload: {
- collIndexPath: string
+ collectionIndexPath: string
collectionName: string
}) => {
- const { collIndexPath, collectionName } = payload
+ const { collectionIndexPath, collectionName } = payload
- editingChildCollIndexPath.value = collIndexPath
- editingChildCollName.value = collectionName
+ editingChildCollectionIndexPath.value = collectionIndexPath
+ editingChildCollectionName.value = collectionName
displayModalEditChildCollection(true)
}
const onEditChildCollection = async (newCollectionName: string) => {
- const collID = editingChildCollIndexPath.value
+ const collectionIndexPath = editingChildCollectionIndexPath.value
- const collHandleResult = await workspaceService.getCollectionHandle(
+ const collectionHandleResult = await workspaceService.getCollectionHandle(
props.workspaceHandle,
- collID
+ collectionIndexPath
)
- if (E.isLeft(collHandleResult)) {
+ if (E.isLeft(collectionHandleResult)) {
// INVALID_WORKSPACE_HANDLE
return
}
- const collHandle = collHandleResult.right
+ const collectionHandle = collectionHandleResult.right
- if (collHandle.value.type === "invalid") {
+ if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE
return
}
- const result = await workspaceService.editRESTChildCollection(
- collHandle,
- newCollectionName
+ // We're sure that the collection exists in the given `collectionIndexPath` as there's a validation happening in `getCollectionHandle` above
+ const updatedCollection = navigateToFolderWithIndexPath(
+ restCollectionStore.value.state,
+ collectionIndexPath.split("/").map((id) => parseInt(id))
+ ) as HoppCollection
+
+ updatedCollection.name = newCollectionName
+
+ const result = await workspaceService.editRESTCollection(
+ collectionHandle,
+ updatedCollection
)
if (E.isLeft(result)) {
@@ -500,35 +518,37 @@ const onEditChildCollection = async (newCollectionName: string) => {
toast.success(t("collection.renamed"))
}
-const removeChildCollection = (parentCollIndexPath: string) => {
- editingCollIndexPath.value = parentCollIndexPath
+const removeChildCollection = (parentCollectionIndexPath: string) => {
+ editingCollectionIndexPath.value = parentCollectionIndexPath
confirmModalTitle.value = `${t("confirm.remove_folder")}`
displayConfirmModal(true)
}
const onRemoveChildCollection = async () => {
- const parentCollIndexPath = editingCollIndexPath.value
+ const parentCollectionIndexPath = editingCollectionIndexPath.value
- const parentCollHandleResult = await workspaceService.getCollectionHandle(
- props.workspaceHandle,
- parentCollIndexPath
- )
+ const parentCollectionHandleResult =
+ await workspaceService.getCollectionHandle(
+ props.workspaceHandle,
+ parentCollectionIndexPath
+ )
- if (E.isLeft(parentCollHandleResult)) {
+ if (E.isLeft(parentCollectionHandleResult)) {
// INVALID_WORKSPACE_HANDLE
return
}
- const parentCollHandle = parentCollHandleResult.right
+ const parentCollectionHandle = parentCollectionHandleResult.right
- if (parentCollHandle.value.type === "invalid") {
+ if (parentCollectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE
return
}
- const result =
- await workspaceService.removeRESTChildCollection(parentCollHandle)
+ const result = await workspaceService.removeRESTChildCollection(
+ parentCollectionHandle
+ )
if (E.isLeft(result)) {
// INVALID_COLLECTION_HANDLE
@@ -545,9 +565,9 @@ const onRemoveChildCollection = async () => {
}
const removeRequest = (requestIndexPath: string) => {
- const collIndexPath = requestIndexPath.split("/").slice(0, -1).join("/")
+ const collectionIndexPath = requestIndexPath.split("/").slice(0, -1).join("/")
- editingCollIndexPath.value = collIndexPath
+ editingCollectionIndexPath.value = collectionIndexPath
editingRequestIndexPath.value = requestIndexPath
confirmModalTitle.value = `${t("confirm.remove_request")}`
@@ -591,7 +611,7 @@ const onRemoveRequest = async () => {
}
const selectRequest = async (requestIndexPath: string) => {
- const collIndexPath = requestIndexPath.split("/").slice(0, -1).join("/")
+ const collectionIndexPath = requestIndexPath.split("/").slice(0, -1).join("/")
const requestHandleResult = await workspaceService.getRequestHandle(
props.workspaceHandle,
@@ -617,13 +637,13 @@ const selectRequest = async (requestIndexPath: string) => {
let possibleTab = null
const { auth, headers } = cascadeParentCollectionForHeaderAuth(
- collIndexPath,
+ collectionIndexPath,
"rest"
)
possibleTab = tabs.getTabRefWithSaveContext({
originLocation: "user-collection",
requestIndex,
- folderPath: collIndexPath,
+ folderPath: collectionIndexPath,
})
if (possibleTab) {
tabs.setActiveTab(possibleTab.value.id)
@@ -634,7 +654,7 @@ const selectRequest = async (requestIndexPath: string) => {
isDirty: false,
saveContext: {
originLocation: "user-collection",
- folderPath: collIndexPath,
+ folderPath: collectionIndexPath,
requestIndex,
},
inheritedProperties: {
@@ -646,7 +666,7 @@ const selectRequest = async (requestIndexPath: string) => {
}
const duplicateRequest = async (requestIndexPath: string) => {
- const collPath = requestIndexPath.split("/").slice(0, -1).join("/")
+ const collectionIndexPath = requestIndexPath.split("/").slice(0, -1).join("/")
const requestHandleResult = await workspaceService.getRequestHandle(
props.workspaceHandle,
@@ -672,7 +692,7 @@ const duplicateRequest = async (requestIndexPath: string) => {
name: `${request.name} - ${t("action.duplicate")}`,
}
- saveRESTRequestAs(collPath, newRequest)
+ saveRESTRequestAs(collectionIndexPath, newRequest)
toast.success(t("request.duplicated"))
}
@@ -683,9 +703,9 @@ const editRequest = (payload: {
}) => {
const { requestIndexPath, requestName } = payload
- const collPath = requestIndexPath.split("/").slice(0, -1).join("/")
+ const collectionIndexPath = requestIndexPath.split("/").slice(0, -1).join("/")
- editingCollIndexPath.value = collPath
+ editingCollectionIndexPath.value = collectionIndexPath
editingRequestIndexPath.value = requestIndexPath
editingRequestName.value = requestName
@@ -737,8 +757,8 @@ const onEditRequest = async (newReqName: string) => {
toast.success(t("request.renamed"))
}
-const editCollectionProperties = async (collIndexPath: string) => {
- const parentIndex = collIndexPath.split("/").slice(0, -1).join("/") // remove last folder to get parent folder
+const editCollectionProperties = async (collectionIndexPath: string) => {
+ const parentIndex = collectionIndexPath.split("/").slice(0, -1).join("/") // remove last folder to get parent folder
let inheritedProperties = {
auth: {
@@ -770,19 +790,19 @@ const editCollectionProperties = async (collIndexPath: string) => {
}
}
- const collHandleResult = await workspaceService.getCollectionHandle(
+ const collectionHandleResult = await workspaceService.getCollectionHandle(
props.workspaceHandle,
- collIndexPath
+ collectionIndexPath
)
- if (E.isLeft(collHandleResult)) {
+ if (E.isLeft(collectionHandleResult)) {
// INVALID_WORKSPACE_HANDLE
return
}
- const collHandle = collHandleResult.right
+ const collectionHandle = collectionHandleResult.right
- if (collHandle.value.type === "invalid") {
+ if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE
return
}
@@ -797,13 +817,13 @@ const editCollectionProperties = async (collIndexPath: string) => {
const collection = navigateToFolderWithIndexPath(
restCollectionState.value.state,
- collIndexPath.split("/").map((i) => parseInt(i))
+ collectionIndexPath.split("/").map((id) => parseInt(id))
)
editingProperties.value = {
collection,
- isRootCollection: isAlreadyInRoot(collIndexPath),
- path: collIndexPath,
+ isRootCollection: isAlreadyInRoot(collectionIndexPath),
+ path: collectionIndexPath,
inheritedProperties,
}
@@ -813,30 +833,42 @@ const editCollectionProperties = async (collIndexPath: string) => {
const setCollectionProperties = async (updatedCollectionProps: {
auth: HoppRESTAuth
headers: HoppCollection["headers"]
- collIndexPath: string
+ collectionIndexPath: string
}) => {
- const { collIndexPath, auth, headers } = updatedCollectionProps
+ const { collectionIndexPath, auth, headers } = updatedCollectionProps
- const collHandleResult = await workspaceService.getCollectionHandle(
+ const collectionHandleResult = await workspaceService.getCollectionHandle(
props.workspaceHandle,
- collIndexPath
+ collectionIndexPath
)
- if (E.isLeft(collHandleResult)) {
+ if (E.isLeft(collectionHandleResult)) {
// INVALID_WORKSPACE_HANDLE
return
}
- const collHandle = collHandleResult.right
+ const collectionHandle = collectionHandleResult.right
- if (collHandle.value.type === "invalid") {
+ if (collectionHandle.value.type === "invalid") {
// WORKSPACE_INVALIDATED | INVALID_COLLECTION_HANDLE
return
}
- const result = await workspaceService.editRESTCollectionProperties(
- collHandle,
- { auth, headers }
+ // We're sure that the collection exists in the given `collectionIndexPath` as there's a validation happening in `getCollectionHandle` above
+ const collection = navigateToFolderWithIndexPath(
+ restCollectionStore.value.state,
+ collectionIndexPath.split("/").map((id) => parseInt(id))
+ ) as HoppCollection
+
+ const updatedCollection = {
+ ...collection,
+ auth,
+ headers,
+ }
+
+ const result = await workspaceService.editRESTCollection(
+ collectionHandle,
+ updatedCollection
)
if (E.isLeft(result)) {
@@ -849,6 +881,20 @@ const setCollectionProperties = async (updatedCollectionProps: {
return
}
+ const { auth: cascadedAuth, headers: cascadedHeaders } =
+ cascadeParentCollectionForHeaderAuth(collectionIndexPath, "rest")
+
+ nextTick(() => {
+ updateInheritedPropertiesForAffectedRequests(
+ collectionIndexPath,
+ {
+ auth: cascadedAuth,
+ headers: cascadedHeaders,
+ },
+ "rest"
+ )
+ })
+
toast.success(t("collection.properties_updated"))
displayModalEditProperties(false)
@@ -871,7 +917,7 @@ const resolveConfirmModal = (title: string | null) => {
}
const resetSelectedData = () => {
- editingCollIndexPath.value = ""
+ editingCollectionIndexPath.value = ""
}
/**
diff --git a/packages/hoppscotch-common/src/services/new-workspace/index.ts b/packages/hoppscotch-common/src/services/new-workspace/index.ts
index 5258f902f..87170cd64 100644
--- a/packages/hoppscotch-common/src/services/new-workspace/index.ts
+++ b/packages/hoppscotch-common/src/services/new-workspace/index.ts
@@ -8,12 +8,12 @@ import {
shallowRef,
watch,
} from "vue"
-import { UpdatedCollectionProperties, WorkspaceProvider } from "./provider"
+import { WorkspaceProvider } from "./provider"
import { HandleRef } from "./handle"
import * as E from "fp-ts/Either"
import { Workspace, WorkspaceCollection, WorkspaceRequest } from "./workspace"
import { RESTCollectionChildrenView, RootRESTCollectionView } from "./view"
-import { HoppRESTRequest } from "@hoppscotch/data"
+import { HoppCollection, HoppRESTRequest } from "@hoppscotch/data"
export type WorkspaceError =
| { type: "SERVICE_ERROR"; error: ServiceErr }
@@ -202,7 +202,7 @@ export class NewWorkspaceService extends Service {
}
public async createRESTChildCollection(
- parentCollHandle: HandleRef,
+ parentCollectionHandle: HandleRef,
collectionName: string
): Promise<
E.Either<
@@ -210,12 +210,12 @@ export class NewWorkspaceService extends Service {
HandleRef
>
> {
- if (parentCollHandle.value.type === "invalid") {
+ if (parentCollectionHandle.value.type === "invalid") {
return E.left({ type: "SERVICE_ERROR", error: "INVALID_HANDLE" })
}
const provider = this.registeredProviders.get(
- parentCollHandle.value.data.providerID
+ parentCollectionHandle.value.data.providerID
)
if (!provider) {
@@ -223,7 +223,7 @@ export class NewWorkspaceService extends Service {
}
const result = await provider.createRESTChildCollection(
- parentCollHandle,
+ parentCollectionHandle,
collectionName
)
@@ -234,96 +234,30 @@ export class NewWorkspaceService extends Service {
return E.right(result.right)
}
- public async editRESTRootCollection(
- collHandle: HandleRef,
- newCollectionName: string
+ public async editRESTCollection(
+ collectionHandle: HandleRef,
+ updatedCollection: HoppCollection
): Promise<
E.Either<
WorkspaceError<"INVALID_HANDLE" | "INVALID_PROVIDER">,
HandleRef
>
> {
- if (collHandle.value.type === "invalid") {
+ if (collectionHandle.value.type === "invalid") {
return E.left({ type: "SERVICE_ERROR", error: "INVALID_HANDLE" })
}
const provider = this.registeredProviders.get(
- collHandle.value.data.providerID
+ collectionHandle.value.data.providerID
)
if (!provider) {
return E.left({ type: "SERVICE_ERROR", error: "INVALID_PROVIDER" })
}
- const result = await provider.editRESTRootCollection(
- collHandle,
- newCollectionName
- )
-
- if (E.isLeft(result)) {
- return E.left({ type: "PROVIDER_ERROR", error: result.left })
- }
-
- return E.right(result.right)
- }
-
- public async editRESTChildCollection(
- collHandle: HandleRef,
- newCollectionName: string
- ): Promise<
- E.Either<
- WorkspaceError<"INVALID_HANDLE" | "INVALID_PROVIDER">,
- HandleRef
- >
- > {
- if (collHandle.value.type === "invalid") {
- return E.left({ type: "SERVICE_ERROR", error: "INVALID_HANDLE" })
- }
-
- const provider = this.registeredProviders.get(
- collHandle.value.data.providerID
- )
-
- if (!provider) {
- return E.left({ type: "SERVICE_ERROR", error: "INVALID_PROVIDER" })
- }
-
- const result = await provider.editRESTChildCollection(
- collHandle,
- newCollectionName
- )
-
- if (E.isLeft(result)) {
- return E.left({ type: "PROVIDER_ERROR", error: result.left })
- }
-
- return E.right(result.right)
- }
-
- public async editRESTCollectionProperties(
- collHandle: HandleRef,
- updatedCollProps: UpdatedCollectionProperties
- ): Promise<
- E.Either<
- WorkspaceError<"INVALID_HANDLE" | "INVALID_PROVIDER">,
- HandleRef
- >
- > {
- if (collHandle.value.type === "invalid") {
- return E.left({ type: "SERVICE_ERROR", error: "INVALID_HANDLE" })
- }
-
- const provider = this.registeredProviders.get(
- collHandle.value.data.providerID
- )
-
- if (!provider) {
- return E.left({ type: "SERVICE_ERROR", error: "INVALID_PROVIDER" })
- }
-
- const result = await provider.editRESTCollectionProperties(
- collHandle,
- updatedCollProps
+ const result = await provider.editRESTCollection(
+ collectionHandle,
+ updatedCollection
)
if (E.isLeft(result)) {
@@ -334,26 +268,26 @@ export class NewWorkspaceService extends Service {
}
public async removeRESTRootCollection(
- collHandle: HandleRef
+ collectionHandle: HandleRef
): Promise<
E.Either<
WorkspaceError<"INVALID_HANDLE" | "INVALID_PROVIDER">,
HandleRef
>
> {
- if (collHandle.value.type === "invalid") {
+ if (collectionHandle.value.type === "invalid") {
return E.left({ type: "SERVICE_ERROR", error: "INVALID_HANDLE" })
}
const provider = this.registeredProviders.get(
- collHandle.value.data.providerID
+ collectionHandle.value.data.providerID
)
if (!provider) {
return E.left({ type: "SERVICE_ERROR", error: "INVALID_PROVIDER" })
}
- const result = await provider.removeRESTRootCollection(collHandle)
+ const result = await provider.removeRESTRootCollection(collectionHandle)
if (E.isLeft(result)) {
return E.left({ type: "PROVIDER_ERROR", error: result.left })
@@ -363,26 +297,28 @@ export class NewWorkspaceService extends Service {
}
public async removeRESTChildCollection(
- parentCollHandle: HandleRef
+ parentCollectionHandle: HandleRef
): Promise<
E.Either<
WorkspaceError<"INVALID_HANDLE" | "INVALID_PROVIDER">,
HandleRef
>
> {
- if (parentCollHandle.value.type === "invalid") {
+ if (parentCollectionHandle.value.type === "invalid") {
return E.left({ type: "SERVICE_ERROR", error: "INVALID_HANDLE" })
}
const provider = this.registeredProviders.get(
- parentCollHandle.value.data.providerID
+ parentCollectionHandle.value.data.providerID
)
if (!provider) {
return E.left({ type: "SERVICE_ERROR", error: "INVALID_PROVIDER" })
}
- const result = await provider.removeRESTChildCollection(parentCollHandle)
+ const result = await provider.removeRESTChildCollection(
+ parentCollectionHandle
+ )
if (E.isLeft(result)) {
return E.left({ type: "PROVIDER_ERROR", error: result.left })
@@ -392,7 +328,7 @@ export class NewWorkspaceService extends Service {
}
public async createRESTRequest(
- parentCollHandle: HandleRef,
+ parentCollectionHandle: HandleRef,
requestName: string,
openInNewTab: boolean
): Promise<
@@ -401,12 +337,12 @@ export class NewWorkspaceService extends Service {
HandleRef
>
> {
- if (parentCollHandle.value.type === "invalid") {
+ if (parentCollectionHandle.value.type === "invalid") {
return E.left({ type: "SERVICE_ERROR", error: "INVALID_HANDLE" })
}
const provider = this.registeredProviders.get(
- parentCollHandle.value.data.providerID
+ parentCollectionHandle.value.data.providerID
)
if (!provider) {
@@ -414,7 +350,7 @@ export class NewWorkspaceService extends Service {
}
const result = await provider.createRESTRequest(
- parentCollHandle,
+ parentCollectionHandle,
requestName,
openInNewTab
)
diff --git a/packages/hoppscotch-common/src/services/new-workspace/provider.ts b/packages/hoppscotch-common/src/services/new-workspace/provider.ts
index 635df7148..806e385d5 100644
--- a/packages/hoppscotch-common/src/services/new-workspace/provider.ts
+++ b/packages/hoppscotch-common/src/services/new-workspace/provider.ts
@@ -8,16 +8,7 @@ import {
WorkspaceRequest,
} from "./workspace"
import { RESTCollectionChildrenView, RootRESTCollectionView } from "./view"
-import {
- HoppRESTAuth,
- HoppRESTHeaders,
- HoppRESTRequest,
-} from "@hoppscotch/data"
-
-export type UpdatedCollectionProperties = {
- auth: HoppRESTAuth
- headers: HoppRESTHeaders
-}
+import { HoppCollection, HoppRESTRequest } from "@hoppscotch/data"
export interface WorkspaceProvider {
providerID: string
@@ -51,37 +42,29 @@ export interface WorkspaceProvider {
collectionName: string
): Promise>>
createRESTChildCollection(
- parentCollHandle: HandleRef,
+ parentCollectionHandle: HandleRef,
collectionName: string
): Promise>>
- editRESTRootCollection(
- collHandle: HandleRef,
- newCollectionName: string
- ): Promise>>
- editRESTChildCollection(
- parentCollHandle: HandleRef,
- newCollectionName: string
- ): Promise>>
- editRESTCollectionProperties(
- parentCollHandle: HandleRef,
- updatedCollProps: UpdatedCollectionProperties
+ editRESTCollection(
+ collectionHandle: HandleRef,
+ updatedCollection: HoppCollection
): Promise>>
removeRESTRootCollection(
- collHandle: HandleRef
+ collectionHandle: HandleRef
): Promise>>
removeRESTChildCollection(
- parentCollHandle: HandleRef
+ parentCollectionHandle: HandleRef
): Promise>>
createRESTRequest(
- parentCollHandle: HandleRef,
+ parentCollectionHandle: HandleRef,
requestName: string,
openInNewTab: boolean
): Promise>>
- removeRESTRequest(
- requestHandle: HandleRef
- ): Promise>>
updateRESTRequest(
requestHandle: HandleRef,
updatedRequest: HoppRESTRequest
): Promise>>
+ removeRESTRequest(
+ requestHandle: HandleRef
+ ): Promise>>
}
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 0118c2bdd..720400583 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
@@ -1,7 +1,7 @@
import { HoppCollection, makeCollection } from "@hoppscotch/data"
import { Service } from "dioc"
import * as E from "fp-ts/Either"
-import { Ref, computed, markRaw, nextTick, ref, shallowRef } from "vue"
+import { Ref, computed, markRaw, ref, shallowRef } from "vue"
import PersonalWorkspaceSelector from "~/components/workspace/PersonalWorkspaceSelector.vue"
import { useStreamStatic } from "~/composables/stream"
@@ -23,10 +23,7 @@ import {
import { platform } from "~/platform"
import { HandleRef } from "~/services/new-workspace/handle"
-import {
- UpdatedCollectionProperties,
- WorkspaceProvider,
-} from "~/services/new-workspace/provider"
+import { WorkspaceProvider } from "~/services/new-workspace/provider"
import {
RESTCollectionChildrenView,
RESTCollectionViewItem,
@@ -52,7 +49,6 @@ import path from "path"
import {
resolveSaveContextOnCollectionReorder,
getFoldersByPath,
- updateInheritedPropertiesForAffectedRequests,
} from "~/helpers/collection/collection"
export class PersonalWorkspaceProviderService
@@ -209,9 +205,9 @@ export class PersonalWorkspaceProviderService
)
}
- public editRESTRootCollection(
+ public editRESTCollection(
collHandle: HandleRef,
- newCollectionName: string
+ updatedCollection: HoppCollection
): Promise>> {
if (
collHandle.value.type !== "ok" ||
@@ -250,129 +246,6 @@ export class PersonalWorkspaceProviderService
}
}
- const updatedCollection = {
- ...collection,
- name: newCollectionName,
- }
-
- const collectionIndex = parseInt(collectionID)
- editRESTCollection(collectionIndex, updatedCollection)
-
- return {
- type: "ok",
- data: true,
- }
- })
- )
- )
- }
-
- public editRESTChildCollection(
- collHandle: HandleRef,
- newCollectionName: string
- ): Promise>> {
- if (
- collHandle.value.type !== "ok" ||
- collHandle.value.data.providerID !== this.providerID ||
- collHandle.value.data.workspaceID !== "personal"
- ) {
- return Promise.resolve(E.left("INVALID_WORKSPACE_HANDLE" as const))
- }
-
- return Promise.resolve(
- E.right(
- computed(() => {
- if (
- collHandle.value.type !== "ok" ||
- collHandle.value.data.providerID !== this.providerID ||
- collHandle.value.data.workspaceID !== "personal"
- ) {
- return {
- type: "invalid" as const,
- reason: "WORKSPACE_INVALIDATED" as const,
- }
- }
-
- const { collectionID } = collHandle.value.data
-
- const collection: HoppCollection | null =
- navigateToFolderWithIndexPath(
- this.restCollectionState.value.state,
- collectionID.split("/").map((id) => parseInt(id))
- )
-
- if (!collection) {
- return {
- type: "invalid" as const,
- reason: "COLLECTION_NOT_FOUND" as const,
- }
- }
-
- const updatedCollection = {
- ...collection,
- name: newCollectionName,
- }
-
- editRESTFolder(collectionID, updatedCollection)
-
- return {
- type: "ok",
- data: true,
- }
- })
- )
- )
- }
-
- public editRESTCollectionProperties(
- collHandle: HandleRef,
- updatedCollProps: UpdatedCollectionProperties
- ): Promise>> {
- if (
- collHandle.value.type !== "ok" ||
- collHandle.value.data.providerID !== this.providerID ||
- collHandle.value.data.workspaceID !== "personal"
- ) {
- return Promise.resolve(E.left("INVALID_WORKSPACE_HANDLE" as const))
- }
-
- return Promise.resolve(
- E.right(
- computed(() => {
- if (
- collHandle.value.type !== "ok" ||
- collHandle.value.data.providerID !== this.providerID ||
- collHandle.value.data.workspaceID !== "personal"
- ) {
- return {
- type: "invalid" as const,
- reason: "WORKSPACE_INVALIDATED" as const,
- }
- }
-
- const { collectionID } = collHandle.value.data
-
- const { auth, headers } = updatedCollProps
-
- const collection: HoppCollection | null =
- navigateToFolderWithIndexPath(
- this.restCollectionState.value.state,
- collectionID.split("/").map((id) => parseInt(id))
- )
-
- if (!collection) {
- return {
- type: "invalid" as const,
- reason: "COLLECTION_NOT_FOUND" as const,
- }
- }
-
- const updatedCollection = {
- ...collection,
- auth,
- headers,
- } as HoppCollection
-
const isRootCollection = collectionID.split("/").length === 1
if (isRootCollection) {
@@ -381,20 +254,6 @@ export class PersonalWorkspaceProviderService
editRESTFolder(collectionID, updatedCollection)
}
- const { auth: cascadedAuth, headers: cascadedHeaders } =
- cascadeParentCollectionForHeaderAuth(collectionID, "rest")
-
- nextTick(() => {
- updateInheritedPropertiesForAffectedRequests(
- collectionID,
- {
- auth: cascadedAuth,
- headers: cascadedHeaders,
- },
- "rest"
- )
- })
-
return {
type: "ok",
data: true,