diff --git a/packages/hoppscotch-app/components/collections/my/Request.vue b/packages/hoppscotch-app/components/collections/my/Request.vue index 0c633f4c6..eca0a947a 100644 --- a/packages/hoppscotch-app/components/collections/my/Request.vue +++ b/packages/hoppscotch-app/components/collections/my/Request.vue @@ -339,7 +339,14 @@ const selectRequest = () => { confirmChange.value = false setRestReq(props.request) } else if (!active.value) { - confirmChange.value = true + // If the current request is the same as the request to be loaded in, there is no data loss + const currentReq = getRESTRequest() + + if (isEqualHoppRESTRequest(currentReq, props.request)) { + setRestReq(props.request) + } else { + confirmChange.value = true + } } else { const currentReqWithNoChange = active.value.req const currentFullReq = getRESTRequest() diff --git a/packages/hoppscotch-app/helpers/curl/__tests__/curlparser.spec.js b/packages/hoppscotch-app/helpers/curl/__tests__/curlparser.spec.js index 0d649a2cf..7b3b8352c 100644 --- a/packages/hoppscotch-app/helpers/curl/__tests__/curlparser.spec.js +++ b/packages/hoppscotch-app/helpers/curl/__tests__/curlparser.spec.js @@ -809,6 +809,37 @@ const samples = [ testScript: "", }), }, + { + command: `curl https://example.com -d "alpha=beta&request_id=4"`, + response: makeRESTRequest({ + method: "POST", + name: "Untitled request", + endpoint: "https://example.com/", + auth: { + authType: "none", + authActive: true, + }, + body: { + contentType: "application/x-www-form-urlencoded", + body: rawKeyValueEntriesToString([ + { + active: true, + key: "alpha", + value: "beta", + }, + { + active: true, + key: "request_id", + value: "4", + }, + ]), + }, + params: [], + headers: [], + preRequestScript: "", + testScript: "", + }), + }, ] describe("Parse curl command to Hopp REST Request", () => { diff --git a/packages/hoppscotch-app/helpers/curl/curlparser.ts b/packages/hoppscotch-app/helpers/curl/curlparser.ts index 21b0b48b1..27f2ef223 100644 --- a/packages/hoppscotch-app/helpers/curl/curlparser.ts +++ b/packages/hoppscotch-app/helpers/curl/curlparser.ts @@ -93,7 +93,8 @@ export const parseCurlCommand = (curlCommand: string) => { hasBodyBeenParsed = true } else if ( rawContentType.includes("application/x-www-form-urlencoded") && - !!pairs + !!pairs && + Array.isArray(rawData) ) { body = pairs.map((p) => p.join(": ")).join("\n") || null contentType = "application/x-www-form-urlencoded"