Ver código fonte

feat: duplicate request

0xc0Der 4 anos atrás
pai
commit
29aff9accc

+ 2 - 0
packages/hoppscotch-app/components/collections/graphql/Collection.vue

@@ -126,6 +126,7 @@
           @add-folder="$emit('add-folder', $event)"
           @edit-folder="$emit('edit-folder', $event)"
           @edit-request="$emit('edit-request', $event)"
+          @duplicate-request="$emit('duplicate-request', $event)"
           @select="$emit('select', $event)"
         />
         <CollectionsGraphqlRequest
@@ -141,6 +142,7 @@
           :request-index="index"
           :doc="doc"
           @edit-request="$emit('edit-request', $event)"
+          @duplicate-request="$emit('duplicate-request', $event)"
           @select="$emit('select', $event)"
         />
         <div

+ 2 - 0
packages/hoppscotch-app/components/collections/graphql/Folder.vue

@@ -122,6 +122,7 @@
           @add-folder="$emit('add-folder', $event)"
           @edit-folder="$emit('edit-folder', $event)"
           @edit-request="$emit('edit-request', $event)"
+          @duplicate-request="$emit('duplicate-request', $event)"
           @select="$emit('select', $event)"
         />
         <CollectionsGraphqlRequest
@@ -137,6 +138,7 @@
           :request-index="index"
           :doc="doc"
           @edit-request="$emit('edit-request', $event)"
+          @duplicate-request="$emit('duplicate-request', $event)"
           @select="$emit('select', $event)"
         />
         <div

+ 14 - 0
packages/hoppscotch-app/components/collections/graphql/Request.vue

@@ -78,6 +78,20 @@
                 }
               "
             />
+            <SmartItem
+              svg="copy"
+              :label="`${$t('action.duplicate')}`"
+              @click.native="
+                () => {
+                  $emit('duplicate-request', {
+                    request,
+                    requestIndex,
+                    folderPath,
+                  })
+                  $refs.options.tippy().hide()
+                }
+              "
+            />
             <SmartItem
               svg="trash-2"
               color="red"

+ 9 - 1
packages/hoppscotch-app/components/collections/graphql/index.vue

@@ -62,6 +62,7 @@
         @add-folder="addFolder($event)"
         @edit-folder="editFolder($event)"
         @edit-request="editRequest($event)"
+        @duplicate-request="duplicateRequest($event)"
         @select-collection="$emit('use-collection', collection)"
         @select="$emit('select', $event)"
       />
@@ -136,7 +137,11 @@
 import { defineComponent } from "@nuxtjs/composition-api"
 import clone from "lodash/clone"
 import { useReadonlyStream } from "~/helpers/utils/composables"
-import { graphqlCollections$, addGraphqlFolder } from "~/newstore/collections"
+import {
+  graphqlCollections$,
+  addGraphqlFolder,
+  saveGraphqlRequestAs,
+} from "~/newstore/collections"
 
 export default defineComponent({
   props: {
@@ -283,6 +288,9 @@ export default defineComponent({
       this.$data.editingRequest = undefined
       this.$data.editingRequestIndex = undefined
     },
+    duplicateRequest({ folderPath, request }) {
+      saveGraphqlRequestAs(folderPath, request)
+    },
   },
 })
 </script>

+ 5 - 0
packages/hoppscotch-app/components/collections/index.vue

@@ -95,6 +95,7 @@
         @add-folder="addFolder($event)"
         @edit-folder="editFolder($event)"
         @edit-request="editRequest($event)"
+        @duplicate-request="duplicateRequest($event)"
         @update-team-collections="updateTeamCollections"
         @select-collection="$emit('use-collection', collection)"
         @unselect-collection="$emit('remove-collection', collection)"
@@ -203,6 +204,7 @@ import {
   editRESTFolder,
   removeRESTRequest,
   editRESTRequest,
+  saveRESTRequestAs,
 } from "~/newstore/collections"
 import {
   useReadonlyStream,
@@ -684,6 +686,9 @@ export default defineComponent({
           })
       }
     },
+    duplicateRequest({ folderPath, request }) {
+      saveRESTRequestAs(folderPath, request)
+    },
   },
 })
 </script>

+ 3 - 4
packages/hoppscotch-app/components/collections/my/Collection.vue

@@ -146,6 +146,7 @@
           @add-folder="$emit('add-folder', $event)"
           @edit-folder="$emit('edit-folder', $event)"
           @edit-request="$emit('edit-request', $event)"
+          @duplicate-request="$emit('duplicate-request', $event)"
           @select="$emit('select', $event)"
           @remove-request="$emit('remove-request', $event)"
         />
@@ -162,7 +163,8 @@
           :save-request="saveRequest"
           :collections-type="collectionsType"
           :picked="picked"
-          @edit-request="editRequest($event)"
+          @edit-request="$emit('edit-request', $event)"
+          @duplicate-request="$emit('duplicate-request', $event)"
           @select="$emit('select', $event)"
           @remove-request="$emit('remove-request', $event)"
         />
@@ -251,9 +253,6 @@ export default defineComponent({
     },
   },
   methods: {
-    editRequest(event) {
-      this.$emit("edit-request", event)
-    },
     toggleShowChildren() {
       if (this.$props.saveRequest)
         this.$emit("select", {

+ 2 - 0
packages/hoppscotch-app/components/collections/my/Folder.vue

@@ -127,6 +127,7 @@
           @add-folder="$emit('add-folder', $event)"
           @edit-folder="$emit('edit-folder', $event)"
           @edit-request="$emit('edit-request', $event)"
+          @duplicate-request="$emit('duplicate-request', $event)"
           @update-team-collections="$emit('update-team-collections')"
           @select="$emit('select', $event)"
           @remove-request="removeRequest"
@@ -145,6 +146,7 @@
           :save-request="saveRequest"
           :collections-type="collectionsType"
           @edit-request="$emit('edit-request', $event)"
+          @duplicate-request="$emit('duplicate-request', $event)"
           @select="$emit('select', $event)"
           @remove-request="removeRequest"
         />

+ 15 - 0
packages/hoppscotch-app/components/collections/my/Request.vue

@@ -94,6 +94,21 @@
                 $refs.options.tippy().hide()
               "
             />
+            <SmartItem
+              svg="copy"
+              :label="$t('action.duplicate')"
+              @click.native="
+                $emit('duplicate-request', {
+                  collectionIndex,
+                  folderIndex,
+                  folderName,
+                  request,
+                  requestIndex,
+                  folderPath,
+                })
+                $refs.options.tippy().hide()
+              "
+            />
             <SmartItem
               svg="trash-2"
               color="red"