refactor: take into account other delimiters

This commit is contained in:
lemmyMwaura
2024-08-02 20:41:47 +03:00
parent 7467a05fc4
commit 43fded2350
3 changed files with 38 additions and 18 deletions

View File

@@ -0,0 +1,26 @@
/** Extracts the key and value from a passed in env string based on the provided delimiters. */
export const getKeyValue = (pastedContent: string, delimiters: string[]) => {
let splitIndex = -1
let key = ""
let value = ""
for (const delimiter of delimiters) {
const idx = pastedContent.indexOf(delimiter)
if (idx !== -1) {
splitIndex = idx
break;
}
}
// if only key is pasted
if (splitIndex === -1) {
key = pastedContent.trim()
return { key, value: "" }
}
key = pastedContent.slice(0, splitIndex).trim()
value = pastedContent.slice(splitIndex + 1).trim()
return { key, value }
};

View File

@@ -8,6 +8,7 @@ import { Button, FormControl, Input, Modal, ModalContent } from "@app/components
import { InfisicalSecretInput } from "@app/components/v2/InfisicalSecretInput";
import { useCreateSecretV3 } from "@app/hooks/api";
import { SecretType } from "@app/hooks/api/types";
import { getKeyValue } from '@app/helpers/parseEnvVar';
import { PopUpNames, usePopUpAction, usePopUpState } from "../../SecretMainPage.store";
@@ -77,16 +78,12 @@ export const CreateSecretForm = ({
const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {
e.preventDefault();
const pastedContent = e.clipboardData.getData('text');
const splitIndex = pastedContent.indexOf("=");
const delimitters = [":", "="];
const pastedContent = e.clipboardData.getData("text");
const { key, value } = getKeyValue(pastedContent, delimitters);
if (splitIndex === -1) return
const key = pastedContent.slice(0, splitIndex)
const value = pastedContent.slice(splitIndex + 1);
setValue('key', key);
setValue('value', value);
setValue("key", key);
setValue("value", value);
}
return (

View File

@@ -20,6 +20,7 @@ import { InfisicalSecretInput } from "@app/components/v2/InfisicalSecretInput";
import { useWorkspace } from "@app/context";
import { useCreateFolder, useCreateSecretV3, useUpdateSecretV3 } from "@app/hooks/api";
import { SecretType,SecretV3RawSanitized } from "@app/hooks/api/types";
import { getKeyValue } from '@app/helpers/parseEnvVar';
const typeSchema = z
.object({
@@ -138,16 +139,12 @@ export const CreateSecretForm = ({
const handlePaste = (e: ClipboardEvent<HTMLInputElement>) => {
e.preventDefault();
const pastedContent = e.clipboardData.getData('text');
const splitIndex = pastedContent.indexOf("=");
const delimitters = [":", "="];
const pastedContent = e.clipboardData.getData("text");
const { key, value } = getKeyValue(pastedContent, delimitters);
if (splitIndex === -1) return
const key = pastedContent.slice(0, splitIndex)
const value = pastedContent.slice(splitIndex + 1);
setValue('key', key);
setValue('value', value);
setValue("key", key);
setValue("value", value);
}
return (