diff --git a/frontend/src/components/v2/InfisicalSecretInput/InfisicalSecretInput.tsx b/frontend/src/components/v2/InfisicalSecretInput/InfisicalSecretInput.tsx index 8c26dfc81..347be1b4f 100644 --- a/frontend/src/components/v2/InfisicalSecretInput/InfisicalSecretInput.tsx +++ b/frontend/src/components/v2/InfisicalSecretInput/InfisicalSecretInput.tsx @@ -55,6 +55,8 @@ type Props = Omit, "onChange" | "val secretPath?: string; environment?: string; containerClassName?: string; + isLoadingValue?: boolean; + isErrorLoadingValue?: boolean; }; type ReferenceItem = { diff --git a/frontend/src/components/v2/SecretInput/SecretInput.tsx b/frontend/src/components/v2/SecretInput/SecretInput.tsx index c320bb0af..60ab5848f 100644 --- a/frontend/src/components/v2/SecretInput/SecretInput.tsx +++ b/frontend/src/components/v2/SecretInput/SecretInput.tsx @@ -7,7 +7,16 @@ import { HIDDEN_SECRET_VALUE } from "@app/pages/secret-manager/SecretDashboardPa const REGEX = /(\${([a-zA-Z0-9-_.]+)})/g; -const syntaxHighlight = (content?: string | null, isVisible?: boolean, isImport?: boolean) => { +const syntaxHighlight = ( + content?: string | null, + isVisible?: boolean, + isImport?: boolean, + isLoadingValue?: boolean, + isErrorLoadingValue?: boolean +) => { + if (isLoadingValue) return HIDDEN_SECRET_VALUE; + if (isErrorLoadingValue) + return Error loading secret value.; if (isImport && !content) return "IMPORTED"; if (content === "") return "EMPTY"; if (!content) return "EMPTY"; @@ -48,6 +57,8 @@ type Props = TextareaHTMLAttributes & { isDisabled?: boolean; containerClassName?: string; canEditButNotView?: boolean; + isLoadingValue?: boolean; + isErrorLoadingValue?: boolean; }; const commonClassName = "font-mono text-sm caret-white border-none outline-none w-full break-all"; @@ -65,6 +76,8 @@ export const SecretInput = forwardRef( isReadOnly, onFocus, canEditButNotView, + isLoadingValue, + isErrorLoadingValue, ...props }, ref @@ -83,7 +96,9 @@ export const SecretInput = forwardRef( {syntaxHighlight( value, isVisible || (isSecretFocused && !valueAlwaysHidden), - isImport + isImport, + isLoadingValue, + isErrorLoadingValue )} @@ -114,7 +129,7 @@ export const SecretInput = forwardRef( }} value={value || ""} {...props} - readOnly={isReadOnly} + readOnly={isReadOnly || isLoadingValue || isErrorLoadingValue} /> diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretMainPage.store.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretMainPage.store.tsx index 4cccc6480..64367a7d1 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/SecretMainPage.store.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/SecretMainPage.store.tsx @@ -408,7 +408,7 @@ const createBatchModeStore: StateCreator const mergedUpdate: PendingSecretUpdate = { ...existingUpdate, secretKey: existingUpdate.secretKey, - originalValue: existingUpdate.originalValue, + originalValue: change.originalValue, originalComment: existingUpdate.originalComment, originalSkipMultilineEncoding: existingUpdate.originalSkipMultilineEncoding, originalTags: existingUpdate.originalTags, diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CommitForm/CommitForm.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CommitForm/CommitForm.tsx index f81cd7b2d..ac72adf43 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/CommitForm/CommitForm.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/CommitForm/CommitForm.tsx @@ -105,7 +105,7 @@ const RenderSecretChanges = ({ onDiscard, change }: RenderResourceProps) => { version: 1, // placeholder, not used secretKey: change.newSecretName ? existingSecret.key : undefined, secretValue: - change.secretValue !== undefined ? (existingSecret.value ?? "") : undefined, + change.secretValue !== undefined ? (change.originalValue ?? "") : undefined, tags: change.tags ? (existingSecret.tags?.map((tag) => tag.slug) ?? []) : undefined, secretMetadata: change.secretMetadata ? existingSecret.secretMetadata : undefined, skipMultilineEncoding: diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem.tsx index 4b75e84e8..7b3ac9738 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem.tsx @@ -126,9 +126,7 @@ export const SecretItem = memo( const [isFieldFocused, setIsFieldFocused] = useToggle(); const queryClient = useQueryClient(); - const canFetchSecretValue = - // TODO NOTE FOR PR PROGRESS: may need to remove !isPending, messes with key edits not fetching proper value - !originalSecret.secretValueHidden && !originalSecret.isEmpty && !isPending; + const canFetchSecretValue = !originalSecret.secretValueHidden && !originalSecret.isEmpty; const fetchSecretValueParams = { environment, @@ -179,25 +177,25 @@ export const SecretItem = memo( ); const getDefaultValue = () => { - if (isLoadingSecretValue) return HIDDEN_SECRET_VALUE; + if (isLoadingSecretValue) return undefined; if (secret.secretValueHidden && !isPending) { return canEditSecretValue ? HIDDEN_SECRET_VALUE : ""; } - if (isErrorFetchingSecretValue) return "Error loading secret value..."; + if (isErrorFetchingSecretValue) return undefined; return secret.value || ""; }; const getOverrideDefaultValue = () => { - if (isLoadingSecretValue) return HIDDEN_SECRET_VALUE; + if (isLoadingSecretValue) return undefined; if (secret.secretValueHidden && !isPending) { return canEditSecretValue ? HIDDEN_SECRET_VALUE : ""; } - if (isErrorFetchingSecretValue) return "Error loading secret value..."; + if (isErrorFetchingSecretValue) return undefined; return secret.valueOverride || ""; }; @@ -510,6 +508,8 @@ export const SecretItem = memo( control={control} render={({ field }) => ( (