ソースを参照

chore: cleanup

liyasthomas 4 年 前
コミット
d0386ef86f

+ 22 - 10
packages/hoppscotch-app/components/http/Request.vue

@@ -168,7 +168,7 @@
           />
           <SmartItem
             ref="copyRequest"
-            :label="shareLinkStatus"
+            :label="shareButtonText"
             :svg="copyLinkIcon"
             :loading="fetchingShareLink"
             @click.native="
@@ -221,6 +221,7 @@ import {
   useRESTRequestName,
   getRESTSaveContext,
   getRESTRequest,
+  restRequest$,
 } from "~/newstore/RESTSession"
 import { editRESTRequest } from "~/newstore/collections"
 import { runRESTRequest$ } from "~/helpers/RequestRunner"
@@ -230,6 +231,7 @@ import {
   useNuxt,
   useI18n,
   useToast,
+  useReadonlyStream,
 } from "~/helpers/utils/composables"
 import { defineActionHandler } from "~/helpers/actions"
 import { copyToClipboard } from "~/helpers/utils/clipboard"
@@ -331,31 +333,41 @@ const clearContent = () => {
 }
 
 const copyLinkIcon = hasNavigatorShare ? ref("share-2") : ref("copy")
-const shareLink = ref("")
-const shareLinkStatus = ref(t("request.copy_link"))
+const shareLink = ref<string | null>("")
 const fetchingShareLink = ref(false)
-const shareLinkAvailable = ref(false)
+
+const shareButtonText = computed(() => {
+  if (shareLink.value) {
+    return shareLink.value
+  } else if (fetchingShareLink.value) {
+    return t("state.loading")
+  } else {
+    return t("request.copy_link")
+  }
+})
+
+const request = useReadonlyStream(restRequest$, getRESTRequest())
+
+watch(request, () => {
+  shareLink.value = null
+})
 
 const copyRequest = async () => {
-  if (shareLinkAvailable.value) {
+  if (shareLink.value) {
     copyShareLink(shareLink.value)
   } else {
     shareLink.value = ""
     fetchingShareLink.value = true
-    shareLinkStatus.value = t("state.loading")
     const request = getRESTRequest()
     const shortcodeResult = await createShortcode(request)()
     if (E.isLeft(shortcodeResult)) {
-      $toast.error(`${shortcodeResult.left.error}`)
+      toast.error(`${shortcodeResult.left.error}`)
       shareLink.value = `${t("error.something_went_wrong")}`
-      shareLinkAvailable.value = false
     } else if (E.isRight(shortcodeResult)) {
       shareLink.value = `/${shortcodeResult.right.createShortcode.id}`
-      shareLinkAvailable.value = true
       copyShareLink(shareLink.value)
     }
     fetchingShareLink.value = false
-    shareLinkStatus.value = shareLink.value
   }
 }
 

+ 0 - 6
packages/hoppscotch-app/helpers/backend/gql/queries/GetRequestFromShortcode.graphql

@@ -1,6 +0,0 @@
-query GetRequestFromShortcode($shortcode: ID!) {
-  shortcode(code: $shortcode) {
-    request
-    id
-  }
-}

+ 9 - 9
packages/hoppscotch-app/pages/r/_id.vue

@@ -62,11 +62,11 @@ import {
 import * as E from "fp-ts/Either"
 import { useGQLQuery } from "~/helpers/backend/GQLClient"
 import {
-  GetRequestFromShortcodeDocument,
-  GetRequestFromShortcodeQuery,
-  GetRequestFromShortcodeQueryVariables,
+  ResolveShortcodeDocument,
+  ResolveShortcodeQuery,
+  ResolveShortcodeQueryVariables,
 } from "~/helpers/backend/graphql"
-import { HoppRESTRequest } from "~/helpers/types/HoppRESTRequest"
+import { makeRESTRequest } from "~/helpers/types/HoppRESTRequest"
 import { setRESTRequest } from "~/newstore/RESTSession"
 
 export default defineComponent({
@@ -76,13 +76,13 @@ export default defineComponent({
     const { localePath } = useContext() as any
 
     const shortcodeDetails = useGQLQuery<
-      GetRequestFromShortcodeQuery,
-      GetRequestFromShortcodeQueryVariables,
+      ResolveShortcodeQuery,
+      ResolveShortcodeQueryVariables,
       ""
     >({
-      query: GetRequestFromShortcodeDocument,
+      query: ResolveShortcodeDocument,
       variables: {
-        shortcode: route.value.params.id as string,
+        code: route.value.params.id as string,
       },
     })
 
@@ -96,7 +96,7 @@ export default defineComponent({
         if (E.isRight(data)) {
           const request = JSON.parse(data.right.shortcode?.request as string)
 
-          setRESTRequest(request as unknown as HoppRESTRequest)
+          setRESTRequest(makeRESTRequest(request))
           router.push({ path: localePath("/") })
         }
       }