Skip to content

Commit 3c2bc6c

Browse files
feat(common): create and manage example responses in collections (hoppscotch#5652)
Co-authored-by: James George <[email protected]>
1 parent d91c554 commit 3c2bc6c

File tree

6 files changed

+328
-4
lines changed

6 files changed

+328
-4
lines changed

packages/hoppscotch-common/locales/en.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
"retry": "Retry",
5555
"save": "Save",
5656
"save_as_example": "Save as example",
57+
"add_example": "Add example",
58+
"invalid_request": "Invalid request data",
5759
"scroll_to_bottom": "Scroll to bottom",
5860
"scroll_to_top": "Scroll to top",
5961
"search": "Search",
@@ -724,7 +726,8 @@
724726
"fetching_access_tokens_list": "Something went wrong while fetching the list of tokens",
725727
"generate_access_token": "Something went wrong while generating the access token",
726728
"delete_access_token": "Something went wrong while deleting the access token",
727-
"extension_not_found": "Extension not found"
729+
"extension_not_found": "Extension not found",
730+
"invalid_request": "Invalid request data"
728731
},
729732
"export": {
730733
"as_json": "Export as JSON",

packages/hoppscotch-common/src/components/collections/MyCollections.vue

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,14 @@
352352
request: node.data.data.data,
353353
})
354354
"
355+
@add-example="
356+
node.data.type === 'requests' &&
357+
emit('add-example', {
358+
folderPath: node.data.data.parentIndex,
359+
request: node.data.data.data,
360+
requestIndex: pathToIndex(node.id),
361+
})
362+
"
355363
@drag-request="
356364
dragRequest($event, {
357365
folderPath: node.data.data.parentIndex,
@@ -659,6 +667,14 @@ const emit = defineEmits<{
659667
request: HoppRESTRequest
660668
}
661669
): void
670+
(
671+
event: "add-example",
672+
payload: {
673+
folderPath: string
674+
request: HoppRESTRequest
675+
requestIndex: number
676+
}
677+
): void
662678
(
663679
event: "drop-request",
664680
payload: {

packages/hoppscotch-common/src/components/collections/Request.vue

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@
103103
@keyup.delete="deleteAction?.$el.click()"
104104
@keyup.s="shareAction?.$el.click()"
105105
@keyup.i="documentationAction?.$el.click()"
106+
@keyup.a="addExampleAction?.$el.click()"
106107
@keyup.escape="hide()"
107108
>
108109
<HoppSmartItem
@@ -131,6 +132,19 @@
131132
}
132133
"
133134
/>
135+
<HoppSmartItem
136+
v-if="!hasNoTeamAccess"
137+
ref="addExampleAction"
138+
:icon="IconPlusCircle"
139+
:label="t('action.add_example')"
140+
:shortcut="['A']"
141+
@click="
142+
() => {
143+
emit('add-example')
144+
hide()
145+
}
146+
"
147+
/>
134148
<HoppSmartItem
135149
v-if="isDocumentationVisible"
136150
ref="documentationAction"
@@ -230,6 +244,7 @@ import IconShare2 from "~icons/lucide/share-2"
230244
import IconArrowRight from "~icons/lucide/chevron-right"
231245
import IconArrowDown from "~icons/lucide/chevron-down"
232246
import IconBook from "~icons/lucide/book"
247+
import IconPlusCircle from "~icons/lucide/plus-circle"
233248
import { ref, PropType, watch, computed } from "vue"
234249
import { HoppRESTRequest } from "@hoppscotch/data"
235250
import { useI18n } from "@composables/i18n"
@@ -319,6 +334,7 @@ const emit = defineEmits<{
319334
(event: "remove-request"): void
320335
(event: "select-request"): void
321336
(event: "share-request"): void
337+
(event: "add-example"): void
322338
(event: "drag-request", payload: DataTransfer): void
323339
(event: "update-request-order", payload: DataTransfer): void
324340
(event: "update-last-request-order", payload: DataTransfer): void
@@ -335,6 +351,7 @@ const options = ref<TippyComponent | null>(null)
335351
const duplicate = ref<HTMLButtonElement | null>(null)
336352
const shareAction = ref<HTMLButtonElement | null>(null)
337353
const documentationAction = ref<HTMLButtonElement | null>(null)
354+
const addExampleAction = ref<HTMLButtonElement | null>(null)
338355
339356
const { isDocumentationVisible } = useDocumentationVisibility()
340357

packages/hoppscotch-common/src/components/collections/TeamCollections.vue

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,14 @@
398398
request: node.data.data.data.request,
399399
})
400400
"
401+
@add-example="
402+
node.data.type === 'requests' &&
403+
emit('add-example', {
404+
folderPath: getPath(node.id),
405+
request: node.data.data.data.request,
406+
requestIndex: node.data.data.data.id,
407+
})
408+
"
401409
@drag-request="
402410
dragRequest($event, {
403411
folderPath: node.data.data.parentIndex,
@@ -705,6 +713,14 @@ const emit = defineEmits<{
705713
request: HoppRESTRequest
706714
}
707715
): void
716+
(
717+
event: "add-example",
718+
payload: {
719+
folderPath: string
720+
request: HoppRESTRequest
721+
requestIndex: string
722+
}
723+
): void
708724
(
709725
event: "sort-collections",
710726
payload: {

0 commit comments

Comments
 (0)