From fce68de282a82effbc5a8084ca8b4572b9ba2c9d Mon Sep 17 00:00:00 2001 From: nivedin Date: Mon, 4 Dec 2023 16:15:10 +0530 Subject: [PATCH] feat: added inherit auth-header for personal gql --- .../components/collections/SaveRequest.vue | 51 ++++-- .../components/collections/graphql/Add.vue | 5 + .../collections/graphql/Collection.vue | 47 ++++- .../components/collections/graphql/Folder.vue | 46 ++++- .../collections/graphql/Request.vue | 36 +--- .../components/collections/graphql/index.vue | 171 +++++++++++++++++- .../src/components/collections/index.vue | 35 ++-- .../src/components/graphql/Authorization.vue | 45 +++++ .../src/components/graphql/Headers.vue | 121 ++++++++++++- .../src/components/graphql/RequestOptions.vue | 12 +- .../src/components/graphql/RequestTab.vue | 1 + .../src/components/http/Authorization.vue | 1 - .../src/helpers/collection/collection.ts | 7 +- .../src/helpers/graphql/default.ts | 2 +- .../src/helpers/graphql/document.ts | 7 + .../src/newstore/collections.ts | 8 +- .../hoppscotch-data/src/collection/index.ts | 2 +- packages/hoppscotch-data/src/graphql/index.ts | 1 + packages/hoppscotch-data/src/graphql/v/2.ts | 47 +++-- 19 files changed, 546 insertions(+), 99 deletions(-) diff --git a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue index 6ab06a989..8d6cd28ae 100644 --- a/packages/hoppscotch-common/src/components/collections/SaveRequest.vue +++ b/packages/hoppscotch-common/src/components/collections/SaveRequest.vue @@ -240,15 +240,14 @@ const saveRequestAs = async () => { }, } - const { auth, headers, name } = cascaseParentCollectionForHeaderAuth( - `${picked.value.collectionIndex}` + const { auth, headers } = cascaseParentCollectionForHeaderAuth( + `${picked.value.collectionIndex}`, + "rest" ) RESTTabs.currentActiveTab.value.document.inheritedProperties = { auth, headers, - parentId: `${picked.value.collectionIndex}`, - parentName: name, } platform.analytics?.logEvent({ @@ -278,15 +277,14 @@ const saveRequestAs = async () => { }, } - const { auth, headers, name } = cascaseParentCollectionForHeaderAuth( - picked.value.folderPath + const { auth, headers } = cascaseParentCollectionForHeaderAuth( + picked.value.folderPath, + "rest" ) RESTTabs.currentActiveTab.value.document.inheritedProperties = { auth, headers, - parentId: picked.value.folderPath, - parentName: name, } platform.analytics?.logEvent({ @@ -317,15 +315,14 @@ const saveRequestAs = async () => { }, } - const { auth, headers, name } = cascaseParentCollectionForHeaderAuth( - picked.value.folderPath + const { auth, headers } = cascaseParentCollectionForHeaderAuth( + picked.value.folderPath, + "rest" ) RESTTabs.currentActiveTab.value.document.inheritedProperties = { auth, headers, - parentId: picked.value.folderPath, - parentName: name, } platform.analytics?.logEvent({ @@ -412,6 +409,16 @@ const saveRequestAs = async () => { workspaceType: "team", }) + const { auth, headers } = cascaseParentCollectionForHeaderAuth( + picked.value.folderPath, + "graphql" + ) + + GQLTabs.currentActiveTab.value.document.inheritedProperties = { + auth, + headers, + } + requestSaved() } else if (picked.value.pickedType === "gql-my-folder") { // TODO: Check for GQL request ? @@ -427,6 +434,16 @@ const saveRequestAs = async () => { workspaceType: "team", }) + const { auth, headers } = cascaseParentCollectionForHeaderAuth( + picked.value.folderPath, + "graphql" + ) + + GQLTabs.currentActiveTab.value.document.inheritedProperties = { + auth, + headers, + } + requestSaved() } else if (picked.value.pickedType === "gql-my-collection") { // TODO: Check for GQL request ? @@ -442,6 +459,16 @@ const saveRequestAs = async () => { workspaceType: "team", }) + const { auth, headers } = cascaseParentCollectionForHeaderAuth( + `${picked.value.collectionIndex}`, + "graphql" + ) + + GQLTabs.currentActiveTab.value.document.inheritedProperties = { + auth, + headers, + } + requestSaved() } } diff --git a/packages/hoppscotch-common/src/components/collections/graphql/Add.vue b/packages/hoppscotch-common/src/components/collections/graphql/Add.vue index c03c145fa..c87b80b9d 100644 --- a/packages/hoppscotch-common/src/components/collections/graphql/Add.vue +++ b/packages/hoppscotch-common/src/components/collections/graphql/Add.vue @@ -64,6 +64,11 @@ const addNewCollection = () => { name: name.value, folders: [], requests: [], + auth: { + authType: "inherit", + authActive: true, + }, + headers: [], }) ) diff --git a/packages/hoppscotch-common/src/components/collections/graphql/Collection.vue b/packages/hoppscotch-common/src/components/collections/graphql/Collection.vue index ba3ff1953..4e2dac72b 100644 --- a/packages/hoppscotch-common/src/components/collections/graphql/Collection.vue +++ b/packages/hoppscotch-common/src/components/collections/graphql/Collection.vue @@ -128,6 +128,21 @@ } " /> + @@ -155,7 +170,14 @@ @edit-folder="$emit('edit-folder', $event)" @edit-request="$emit('edit-request', $event)" @duplicate-request="$emit('duplicate-request', $event)" + @edit-properties=" + $emit('edit-properties', { + collectionIndex: `${collectionIndex}/${String(index)}`, + collection: folder, + }) + " @select="$emit('select', $event)" + @select-request="$emit('select-request', $event)" /> ({}) }, - isFiltered: Boolean, -}) + saveRequest: boolean + collectionIndex: number | null + collection: HoppCollection + isFiltered: boolean +}>() const colorMode = useColorMode() const toast = useToast() @@ -248,7 +273,15 @@ const emit = defineEmits<{ (e: "add-request", i: any): void (e: "add-folder", i: any): void (e: "edit-folder", i: any): void + ( + e: "edit-properties", + payload: { + collectionIndex: string | null + collection: HoppCollection + } + ): void (e: "edit-collection"): void + (e: "select-request", i: any): void }>() // Template refs diff --git a/packages/hoppscotch-common/src/components/collections/graphql/Folder.vue b/packages/hoppscotch-common/src/components/collections/graphql/Folder.vue index cb7cb9c23..28c7a9dcc 100644 --- a/packages/hoppscotch-common/src/components/collections/graphql/Folder.vue +++ b/packages/hoppscotch-common/src/components/collections/graphql/Folder.vue @@ -121,6 +121,21 @@ } " /> + @@ -149,7 +164,14 @@ @edit-folder="emit('edit-folder', $event)" @edit-request="emit('edit-request', $event)" @duplicate-request="emit('duplicate-request', $event)" + @edit-properties=" + emit('edit-properties', { + collectionIndex: `${folderPath}/${String(subFolderIndex)}`, + collection: subFolder, + }) + " @select="emit('select', $event)" + @select-request="$emit('select-request', $event)" /> ({}) }, - folderIndex: { type: Number, default: null }, - collectionIndex: { type: Number, default: null }, - folderPath: { type: String, default: null }, - isFiltered: Boolean, -}) + saveRequest: boolean + folder: HoppCollection + folderIndex: number + collectionIndex: number + folderPath: string + isFiltered: boolean +}>() const emit = defineEmits([ "select", @@ -230,6 +256,8 @@ const emit = defineEmits([ "add-folder", "edit-folder", "duplicate-request", + "edit-properties", + "select-request", ]) // Template refs diff --git a/packages/hoppscotch-common/src/components/collections/graphql/Request.vue b/packages/hoppscotch-common/src/components/collections/graphql/Request.vue index 1629624f1..5790e7a77 100644 --- a/packages/hoppscotch-common/src/components/collections/graphql/Request.vue +++ b/packages/hoppscotch-common/src/components/collections/graphql/Request.vue @@ -178,7 +178,12 @@ const isActive = computed(() => { }) // TODO: Better types please -const emit = defineEmits(["select", "edit-request", "duplicate-request"]) +const emit = defineEmits([ + "select", + "edit-request", + "duplicate-request", + "select-request", +]) const dragging = ref(false) const confirmRemove = ref(false) @@ -202,36 +207,11 @@ const selectRequest = () => { if (props.saveRequest) { pick() } else { - const possibleTab = tabs.getTabRefWithSaveContext({ - originLocation: "user-collection", + emit("select-request", { + request: props.request, folderPath: props.folderPath, requestIndex: props.requestIndex, }) - - // Switch to that request if that request is open - if (possibleTab) { - tabs.setActiveTab(possibleTab.value.id) - return - } - - tabs.createNewTab({ - saveContext: { - originLocation: "user-collection", - folderPath: props.folderPath, - requestIndex: props.requestIndex, - }, - request: cloneDeep( - makeGQLRequest({ - name: props.request.name, - url: props.request.url, - query: props.request.query, - headers: props.request.headers, - variables: props.request.variables, - auth: props.request.auth, - }) - ), - isDirty: false, - }) } } diff --git a/packages/hoppscotch-common/src/components/collections/graphql/index.vue b/packages/hoppscotch-common/src/components/collections/graphql/index.vue index e1fe0500d..114ff9054 100644 --- a/packages/hoppscotch-common/src/components/collections/graphql/index.vue +++ b/packages/hoppscotch-common/src/components/collections/graphql/index.vue @@ -57,7 +57,9 @@ @edit-request="editRequest($event)" @duplicate-request="duplicateRequest($event)" @select-collection="$emit('use-collection', collection)" + @edit-properties="editProperties($event)" @select="$emit('select', $event)" + @select-request="selectRequest($event)" /> +