Add referenced secret delete warning to batch delete modal inside env

This commit is contained in:
carlosmonastyrski
2025-04-11 10:12:41 -03:00
parent aeaa5babab
commit aec131543f
4 changed files with 25 additions and 5 deletions
@@ -440,6 +440,7 @@ const Page = () => {
onToggleRowType={handleToggleRowType}
onClickRollbackMode={() => handlePopUpToggle("snapshots", true)}
protectedBranchPolicyName={boardPolicy?.name}
importedBy={importedBy}
/>
<div className="thin-scrollbar mt-3 overflow-y-auto overflow-x-hidden rounded-md rounded-b-none bg-mineshaft-800 text-left text-sm text-bunker-300">
<div className="flex flex-col" id="dashboard">
@@ -86,6 +86,7 @@ import { CreateDynamicSecretForm } from "./CreateDynamicSecretForm";
import { CreateSecretImportForm } from "./CreateSecretImportForm";
import { FolderForm } from "./FolderForm";
import { MoveSecretsModal } from "./MoveSecretsModal";
import { CollapsibleSecretImports } from "../SecretListView/CollapsibleSecretImports";
type TParsedEnv = Record<string, { value: string; comments: string[]; secretPath?: string }>;
type TParsedFolderEnv = Record<
@@ -112,6 +113,14 @@ type Props = {
onVisibilityToggle: () => void;
onToggleRowType: (rowType: RowType) => void;
onClickRollbackMode: () => void;
importedBy?: {
environment: { name: string; slug: string };
folders: {
name: string;
secrets?: { secretId: string; referencedSecretKey: string }[];
isImported: boolean;
}[];
}[];
};
export const ActionBar = ({
@@ -129,7 +138,8 @@ export const ActionBar = ({
onVisibilityToggle,
onClickRollbackMode,
onToggleRowType,
protectedBranchPolicyName
protectedBranchPolicyName,
importedBy
}: Props) => {
const { handlePopUpOpen, handlePopUpToggle, handlePopUpClose, popUp } = usePopUp([
"addFolder",
@@ -1059,6 +1069,15 @@ export const ActionBar = ({
title="Do you want to delete these secrets?"
onChange={(isOpen) => handlePopUpToggle("bulkDeleteSecrets", isOpen)}
onDeleteApproved={handleSecretBulkDelete}
formContent={
importedBy &&
importedBy.length > 0 && (
<CollapsibleSecretImports
importedBy={importedBy}
secretsToDelete={Object.values(selectedSecrets).map((s) => s.key)}
/>
)
}
/>
<MoveSecretsModal
popUp={popUp}
@@ -28,12 +28,12 @@ interface CollapsibleSecretImportsProps {
isImported: boolean;
}[];
}[];
secretToDelete: string;
secretsToDelete: string[];
}
export const CollapsibleSecretImports: React.FC<CollapsibleSecretImportsProps> = ({
importedBy = [],
secretToDelete
secretsToDelete
}) => {
const { currentWorkspace } = useWorkspace();
@@ -83,7 +83,7 @@ export const CollapsibleSecretImports: React.FC<CollapsibleSecretImportsProps> =
if (folder.secrets?.length) {
folder.secrets.forEach(({ secretId: secret, referencedSecretKey }) => {
const secretPath = folder.name === "/" ? `/${secret}` : `${folder.name}/${secret}`;
if (referencedSecretKey === secretToDelete) {
if (secretsToDelete.includes(referencedSecretKey)) {
items.push({
type: ItemType.Secret,
path: secretPath,
@@ -372,7 +372,7 @@ export const SecretListView = ({
importedBy.length > 0 && (
<CollapsibleSecretImports
importedBy={importedBy}
secretToDelete={(popUp.deleteSecret?.data as SecretV3RawSanitized)?.key}
secretsToDelete={[(popUp.deleteSecret?.data as SecretV3RawSanitized)?.key || ""]}
/>
)
}