Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: secret env bug in firebase due to undefined value #3881

Merged
merged 4 commits into from Mar 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
Expand Up @@ -165,7 +165,7 @@ import { environmentsStore } from "~/newstore/environments"
import { platform } from "~/platform"
import { useService } from "dioc/vue"
import { SecretEnvironmentService } from "~/services/secret-environment.service"
import { uniqueId } from "lodash-es"
import { uniqueID } from "~/helpers/utils/uniqueID"

type EnvironmentVariable = {
id: number
Expand Down Expand Up @@ -277,7 +277,7 @@ const workingEnv = computed(() => {
} as Environment
} else if (props.action === "new") {
return {
id: uniqueId(),
id: uniqueID(),
name: "",
variables: props.envVars(),
}
Expand Down Expand Up @@ -331,7 +331,7 @@ watch(
: "variables"

if (props.editingEnvironmentIndex !== "Global") {
editingID.value = workingEnv.value?.id ?? uniqueId()
editingID.value = workingEnv.value?.id || uniqueID()
}
vars.value = pipe(
workingEnv.value?.variables ?? [],
Expand Down Expand Up @@ -416,14 +416,12 @@ const saveEnvironment = () => {

const variables = pipe(
filteredVariables,
A.map((e) =>
e.secret ? { key: e.key, secret: e.secret, value: undefined } : e
)
A.map((e) => (e.secret ? { key: e.key, secret: e.secret } : e))
)

const environmentUpdated: Environment = {
v: 1,
id: uniqueId(),
id: uniqueID(),
name: editingName.value,
variables,
}
Expand Down
Expand Up @@ -360,7 +360,7 @@ const saveEnvironment = async () => {
return
}

const filterdVariables = pipe(
const filteredVariables = pipe(
vars.value,
A.filterMap(
flow(
Expand All @@ -371,17 +371,15 @@ const saveEnvironment = async () => {
)

const secretVariables = pipe(
filterdVariables,
filteredVariables,
A.filterMapWithIndex((i, e) =>
e.secret ? O.some({ key: e.key, value: e.value, varIndex: i }) : O.none
)
)

const variables = pipe(
filterdVariables,
A.map((e) =>
e.secret ? { key: e.key, secret: e.secret, value: undefined } : e
)
filteredVariables,
A.map((e) => (e.secret ? { key: e.key, secret: e.secret } : e))
)

const environmentUpdated: Environment = {
Expand Down
Expand Up @@ -6,7 +6,7 @@ import { IMPORTER_INVALID_FILE_FORMAT } from "."
import { z } from "zod"
import { NonSecretEnvironment } from "@hoppscotch/data"
import { safeParseJSONOrYAML } from "~/helpers/functional/yaml"
import { uniqueId } from "lodash-es"
import { uniqueID } from "~/helpers/utils/uniqueID"

const insomniaResourcesSchema = z.object({
resources: z.array(
Expand Down Expand Up @@ -67,7 +67,7 @@ export const insomniaEnvImporter = (contents: string[]) => {

if (parsedInsomniaEnv.success) {
const environment: NonSecretEnvironment = {
id: uniqueId(),
id: uniqueID(),
v: 1,
name: parsedInsomniaEnv.data.name,
variables: Object.entries(parsedInsomniaEnv.data.data).map(
Expand Down
@@ -1,11 +1,11 @@
import { Environment } from "@hoppscotch/data"
import * as O from "fp-ts/Option"
import * as TE from "fp-ts/TaskEither"
import { uniqueId } from "lodash-es"
import { z } from "zod"

import { safeParseJSON } from "~/helpers/functional/json"
import { IMPORTER_INVALID_FILE_FORMAT } from "."
import { uniqueID } from "~/helpers/utils/uniqueID"

const postmanEnvSchema = z.object({
name: z.string(),
Expand Down Expand Up @@ -49,7 +49,7 @@ export const postmanEnvImporter = (contents: string[]) => {
// Convert `values` to `variables` to match the format expected by the system
const environments: Environment[] = validationResult.data.map(
({ name, values }) => ({
id: uniqueId(),
id: uniqueID(),
v: 1,
name,
variables: values.map((entires) => ({ ...entires, secret: false })),
Expand Down
3 changes: 3 additions & 0 deletions packages/hoppscotch-common/src/helpers/utils/uniqueID.ts
@@ -0,0 +1,3 @@
export const uniqueID = (length = 16) => {
return Math.random().toString(36).substring(2, length)
}
9 changes: 5 additions & 4 deletions packages/hoppscotch-common/src/newstore/environments.ts
@@ -1,7 +1,8 @@
import { Environment } from "@hoppscotch/data"
import { cloneDeep, isEqual, uniqueId } from "lodash-es"
import { cloneDeep, isEqual } from "lodash-es"
import { combineLatest, Observable } from "rxjs"
import { distinctUntilChanged, map, pluck } from "rxjs/operators"
import { uniqueID } from "~/helpers/utils/uniqueID"
import { getService } from "~/modules/dioc"
import DispatchingStore, {
defineDispatchers,
Expand All @@ -22,7 +23,7 @@ const defaultEnvironmentsState = {
environments: [
{
v: 1,
id: uniqueId(),
id: uniqueID(),
name: "My Environment Variables",
variables: [],
},
Expand Down Expand Up @@ -100,7 +101,7 @@ const dispatchers = defineDispatchers({
}
: {
v: 1,
id: "",
id: uniqueID(),
name,
variables,
},
Expand All @@ -123,7 +124,7 @@ const dispatchers = defineDispatchers({
...environments,
{
...cloneDeep(newEnvironment),
id: uniqueId(),
id: uniqueID(),
name: `${newEnvironment.name} - Duplicate`,
},
],
Expand Down
4 changes: 2 additions & 2 deletions packages/hoppscotch-data/src/environment/index.ts
Expand Up @@ -5,7 +5,7 @@ import { InferredEntity, createVersionedEntity } from "verzod"
import { z } from "zod"

import V0_VERSION from "./v/0"
import V1_VERSION from "./v/1"
import V1_VERSION, { uniqueID } from "./v/1"

const versionedObject = z.object({
v: z.number(),
Expand Down Expand Up @@ -165,7 +165,7 @@ export const translateToNewEnvironment = (x: any): Environment => {
if (x.v && x.v === EnvironmentSchemaVersion) return x

// Legacy
const id = x.id ?? ""
const id = x.id || uniqueID()
const name = x.name ?? "Untitled"
const variables = (x.variables ?? []).map(translateToNewEnvironmentVariables)

Expand Down
4 changes: 3 additions & 1 deletion packages/hoppscotch-data/src/environment/v/1.ts
Expand Up @@ -2,6 +2,8 @@ import { z } from "zod"
import { defineVersion } from "verzod"
import { V0_SCHEMA } from "./0"

export const uniqueID = () => Math.random().toString(36).substring(2, 16)

export const V1_SCHEMA = z.object({
v: z.literal(1),
id: z.string(),
Expand All @@ -28,7 +30,7 @@ export default defineVersion({
const result: z.infer<typeof V1_SCHEMA> = {
...old,
v: 1,
id: old.id ?? "",
id: old.id || uniqueID(),
variables: old.variables.map((variable) => {
return {
...variable,
Expand Down