From 79914b32a1264af4384114427161e252a017208d Mon Sep 17 00:00:00 2001 From: Andrew Bastin Date: Wed, 16 Feb 2022 13:34:38 +0530 Subject: [PATCH] fix: spacing and corrections for commented lines in raw key value --- .../components/graphql/RequestOptions.vue | 31 ++++++++++--------- .../components/http/Headers.vue | 30 +++++++++--------- .../components/http/Parameters.vue | 30 +++++++++--------- .../components/http/URLEncodedParams.vue | 26 ++++++++-------- .../helpers/editor/linting/rawKeyValue.ts | 2 +- packages/hoppscotch-data/src/rawKeyValue.ts | 2 +- 6 files changed, 64 insertions(+), 57 deletions(-) diff --git a/packages/hoppscotch-app/components/graphql/RequestOptions.vue b/packages/hoppscotch-app/components/graphql/RequestOptions.vue index 872027b47..69b7f2385 100644 --- a/packages/hoppscotch-app/components/graphql/RequestOptions.vue +++ b/packages/hoppscotch-app/components/graphql/RequestOptions.vue @@ -270,7 +270,16 @@ import { Ref, computed, reactive, ref, watch } from "@nuxtjs/composition-api" import clone from "lodash/clone" import * as gql from "graphql" -import { GQLHeader, makeGQLRequest } from "@hoppscotch/data" +import * as E from "fp-ts/Either" +import * as RA from "fp-ts/ReadonlyArray" +import { pipe } from "fp-ts/function" +import { + GQLHeader, + makeGQLRequest, + rawKeyValueEntriesToString, + parseRawKeyValueEntriesE, + RawKeyValueEntry, +} from "@hoppscotch/data" import isEqual from "lodash/isEqual" import { copyToClipboard } from "~/helpers/utils/clipboard" import { @@ -384,14 +393,12 @@ watch(workingHeaders, (newWorkingHeaders) => { // Bulk Editor Syncing with Working Headers watch(bulkHeaders, () => { try { - const transformation = bulkHeaders.value - .split("\n") - .filter((x) => x.trim().length > 0 && x.includes(":")) - .map((item) => ({ - key: item.substring(0, item.indexOf(":")).trimLeft().replace(/^#/, ""), - value: item.substring(item.indexOf(":") + 1).trimLeft(), - active: !item.trim().startsWith("#"), - })) + const transformation = pipe( + bulkHeaders.value, + parseRawKeyValueEntriesE, + E.map(RA.toArray), + E.getOrElse(() => [] as RawKeyValueEntry[]) + ) const filteredHeaders = workingHeaders.value.filter((x) => x.key !== "") @@ -418,11 +425,7 @@ watch(workingHeaders, (newHeadersList) => { const filteredHeaders = newHeadersList.filter((x) => x.key !== "") if (!isEqual(currentBulkHeaders, filteredHeaders)) { - bulkHeaders.value = filteredHeaders - .map((header) => { - return `${header.active ? "" : "#"}${header.key}: ${header.value}` - }) - .join("\n") + bulkHeaders.value = rawKeyValueEntriesToString(filteredHeaders) } } catch (e) { toast.error(`${t("error.something_went_wrong")}`) diff --git a/packages/hoppscotch-app/components/http/Headers.vue b/packages/hoppscotch-app/components/http/Headers.vue index 2a6a942a4..c06505fd6 100644 --- a/packages/hoppscotch-app/components/http/Headers.vue +++ b/packages/hoppscotch-app/components/http/Headers.vue @@ -143,7 +143,15 @@ import { Ref, ref, watch } from "@nuxtjs/composition-api" import isEqual from "lodash/isEqual" import clone from "lodash/clone" -import { HoppRESTHeader } from "@hoppscotch/data" +import { + HoppRESTHeader, + parseRawKeyValueEntriesE, + rawKeyValueEntriesToString, + RawKeyValueEntry, +} from "@hoppscotch/data" +import { pipe } from "fp-ts/function" +import * as RA from "fp-ts/ReadonlyArray" +import * as E from "fp-ts/Either" import { useCodemirror } from "~/helpers/editor/codemirror" import { restHeaders$, setRESTHeaders } from "~/newstore/RESTSession" import { commonHeaders } from "~/helpers/headers" @@ -223,14 +231,12 @@ watch(workingHeaders, (newWorkingHeaders) => { // Bulk Editor Syncing with Working Headers watch(bulkHeaders, () => { try { - const transformation = bulkHeaders.value - .split("\n") - .filter((x) => x.trim().length > 0 && x.includes(":")) - .map((item) => ({ - key: item.substring(0, item.indexOf(":")).trimLeft().replace(/^#/, ""), - value: item.substring(item.indexOf(":") + 1).trimLeft(), - active: !item.trim().startsWith("#"), - })) + const transformation = pipe( + bulkHeaders.value, + parseRawKeyValueEntriesE, + E.map(RA.toArray), + E.getOrElse(() => [] as RawKeyValueEntry[]) + ) const filteredHeaders = workingHeaders.value.filter((x) => x.key !== "") @@ -257,11 +263,7 @@ watch(workingHeaders, (newHeadersList) => { const filteredHeaders = newHeadersList.filter((x) => x.key !== "") if (!isEqual(currentBulkHeaders, filteredHeaders)) { - bulkHeaders.value = filteredHeaders - .map((header) => { - return `${header.active ? "" : "#"}${header.key}: ${header.value}` - }) - .join("\n") + bulkHeaders.value = rawKeyValueEntriesToString(filteredHeaders) } } catch (e) { toast.error(`${t("error.something_went_wrong")}`) diff --git a/packages/hoppscotch-app/components/http/Parameters.vue b/packages/hoppscotch-app/components/http/Parameters.vue index 2c7f67112..447e4d930 100644 --- a/packages/hoppscotch-app/components/http/Parameters.vue +++ b/packages/hoppscotch-app/components/http/Parameters.vue @@ -129,7 +129,15 @@