Skip to content

Commit c6c3f2c

Browse files
improvements: address more feedback
1 parent 55b240f commit c6c3f2c

File tree

8 files changed

+55
-11
lines changed

8 files changed

+55
-11
lines changed

frontend/src/hooks/api/dashboard/queries.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ export const useGetProjectSecretsOverview = (
223223
environments
224224
});
225225

226-
queryClient.resetQueries({
226+
queryClient.invalidateQueries({
227227
queryKey: dashboardKeys.getSecretValuesRoot()
228228
});
229229

@@ -335,7 +335,7 @@ export const useGetProjectSecretsDetails = (
335335
tags
336336
});
337337

338-
queryClient.resetQueries({
338+
queryClient.invalidateQueries({
339339
queryKey: dashboardKeys.getSecretValuesRoot()
340340
});
341341

frontend/src/hooks/api/secrets/queries.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import axios from "axios";
66
import { createNotification } from "@app/components/notifications";
77
import { apiRequest } from "@app/config/request";
88
import { useToggle } from "@app/hooks/useToggle";
9+
import { HIDDEN_SECRET_VALUE } from "@app/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem";
910

1011
import { ERROR_NOT_ALLOWED_READ_SECRETS } from "./constants";
1112
import {
@@ -81,7 +82,7 @@ export const mergePersonalSecrets = (rawSecrets: SecretV3Raw[]) => {
8182
id: el.id,
8283
env: el.environment,
8384
key: el.secretKey,
84-
value: el.secretValue,
85+
value: el.secretValueHidden ? HIDDEN_SECRET_VALUE : el.secretValue,
8586
secretValueHidden: el.secretValueHidden,
8687
tags: el.tags || [],
8788
comment: el.secretComment || "",

frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewTableRow/SecretEditRow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ export const SecretEditRow = ({
151151
formState: { isDirty, isSubmitting }
152152
} = useForm({
153153
defaultValues: {
154-
value: (secretValueData?.valueOverride ?? secretValueData?.value) || null
154+
value: secretValueData?.valueOverride ?? secretValueData?.value ?? (defaultValue || null)
155155
}
156156
});
157157

frontend/src/pages/secret-manager/SecretDashboardPage/SecretDashboardPage.tsx

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,12 @@ import {
4747
useGetWsTags
4848
} from "@app/hooks/api";
4949
import { useGetProjectSecretsDetails } from "@app/hooks/api/dashboard";
50+
import { dashboardKeys } from "@app/hooks/api/dashboard/queries";
5051
import { DashboardSecretsOrderBy } from "@app/hooks/api/dashboard/types";
5152
import { useGetFolderCommitsCount } from "@app/hooks/api/folderCommits";
5253
import { OrderByDirection } from "@app/hooks/api/generic/types";
5354
import { ProjectVersion } from "@app/hooks/api/projects/types";
55+
import { queryClient } from "@app/hooks/api/reactQuery";
5456
import { PendingAction } from "@app/hooks/api/secretFolders/types";
5557
import { useCreateCommit } from "@app/hooks/api/secrets/mutations";
5658
import { SecretV3RawSanitized } from "@app/hooks/api/types";
@@ -152,6 +154,10 @@ const Page = () => {
152154
}
153155
}, [isBatchMode, projectId, environment, secretPath, loadPendingChanges]);
154156

157+
useEffect(() => {
158+
if (isVisible) setIsVisible(false);
159+
}, [environment]);
160+
155161
const canReadSecret = hasSecretReadValueOrDescribePermission(
156162
permission,
157163
ProjectPermissionSecretActions.DescribeSecret,
@@ -335,6 +341,24 @@ const Page = () => {
335341
pendingChanges: changes,
336342
message
337343
});
344+
345+
if (!isProtectedBranch) {
346+
pendingChanges.secrets.forEach((secret) => {
347+
if (secret.type === "update" && secret.secretValue !== undefined) {
348+
queryClient.setQueryData(
349+
dashboardKeys.getSecretValue({
350+
projectId,
351+
environment,
352+
secretPath,
353+
secretKey: secret.newSecretName ?? secret.secretKey,
354+
isOverride: false
355+
}),
356+
{ value: secret.secretValue }
357+
);
358+
}
359+
});
360+
}
361+
338362
createNotification({
339363
text: isProtectedBranch
340364
? "Requested changes have been sent for review"

frontend/src/pages/secret-manager/SecretDashboardPage/SecretMainPage.store.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export interface PendingSecretDelete extends BasePendingChange {
5454
type: PendingAction.Delete;
5555
secretKey: string;
5656
secretValue: string;
57+
secretValueHidden: boolean;
5758
}
5859

5960
// Folder-related change types

frontend/src/pages/secret-manager/SecretDashboardPage/components/CommitForm/CommitForm.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { AnimatePresence, motion } from "framer-motion";
1313
import { Badge, Button, Input, Modal, ModalContent } from "@app/components/v2";
1414
import { PendingAction } from "@app/hooks/api/secretFolders/types";
1515
import { SecretVersionDiffView } from "@app/pages/secret-manager/CommitDetailsPage/components/SecretVersionDiffView";
16+
import { HIDDEN_SECRET_VALUE_API_MASK } from "@app/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem";
1617

1718
import {
1819
PendingChange,
@@ -105,7 +106,12 @@ const RenderSecretChanges = ({ onDiscard, change }: RenderResourceProps) => {
105106
version: 1, // placeholder, not used
106107
secretKey: change.newSecretName ? existingSecret.key : undefined,
107108
secretValue:
108-
change.secretValue !== undefined ? (change.originalValue ?? "") : undefined,
109+
// eslint-disable-next-line no-nested-ternary
110+
change.secretValue !== undefined
111+
? change.existingSecret.secretValueHidden
112+
? HIDDEN_SECRET_VALUE_API_MASK
113+
: (change.originalValue ?? "")
114+
: undefined,
109115
tags: change.tags ? (existingSecret.tags?.map((tag) => tag.slug) ?? []) : undefined,
110116
secretMetadata: change.secretMetadata ? existingSecret.secretMetadata : undefined,
111117
skipMultilineEncoding:
@@ -130,7 +136,7 @@ const RenderSecretChanges = ({ onDiscard, change }: RenderResourceProps) => {
130136
}
131137

132138
if (change.type === PendingAction.Delete) {
133-
const { secretKey, secretValue } = change;
139+
const { secretKey, secretValue, secretValueHidden } = change;
134140
return (
135141
<SecretVersionDiffView
136142
onDiscard={onDiscard}
@@ -143,7 +149,12 @@ const RenderSecretChanges = ({ onDiscard, change }: RenderResourceProps) => {
143149
{
144150
version: 1, // placeholder, not used
145151
secretKey,
146-
secretValue: secretValue || undefined
152+
// eslint-disable-next-line no-nested-ternary
153+
secretValue: secretValue
154+
? secretValueHidden
155+
? HIDDEN_SECRET_VALUE_API_MASK
156+
: secretValue
157+
: undefined
147158
}
148159
]
149160
}}

frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretItem.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,8 @@ export const SecretItem = memo(
212212
reset,
213213
getValues,
214214
trigger,
215-
formState: { isDirty, isSubmitting, errors }
215+
formState: { isDirty, isSubmitting, errors },
216+
getFieldState
216217
} = useForm<TFormSchema>({
217218
defaultValues: {
218219
...secret,
@@ -497,7 +498,7 @@ export const SecretItem = memo(
497498
tabIndex={0}
498499
role="button"
499500
>
500-
{secretValueHidden && !isOverridden && !isPending && (
501+
{secretValueHidden && !getFieldState("value").isDirty && (
501502
<Tooltip
502503
content={`You do not have access to view the current value${canEditSecretValue && !isRotatedSecret ? ", but you can set a new one" : "."}`}
503504
>

frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretListView/SecretListView.tsx

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,12 @@ export const SecretListView = ({
466466
);
467467

468468
const handleSecretDelete = useCallback(async () => {
469-
const { key, id: secretId, value } = popUp.deleteSecret?.data as SecretV3RawSanitized;
469+
const {
470+
key,
471+
id: secretId,
472+
value,
473+
secretValueHidden
474+
} = popUp.deleteSecret?.data as SecretV3RawSanitized;
470475
try {
471476
if (isBatchMode) {
472477
const deleteChange: PendingSecretDelete = {
@@ -475,7 +480,8 @@ export const SecretListView = ({
475480
secretKey: key,
476481
secretValue: value || "",
477482
timestamp: Date.now(),
478-
resourceType: "secret"
483+
resourceType: "secret",
484+
secretValueHidden
479485
};
480486

481487
addPendingChange(deleteChange, {

0 commit comments

Comments
 (0)