mirror of
https://github.com/awatertrevi/infisical.git
synced 2026-10-09 10:28:21 +00:00
Add referenced secret delete warning to batch delete modal inside env
This commit is contained in:
@@ -440,6 +440,7 @@ const Page = () => {
|
|||||||
onToggleRowType={handleToggleRowType}
|
onToggleRowType={handleToggleRowType}
|
||||||
onClickRollbackMode={() => handlePopUpToggle("snapshots", true)}
|
onClickRollbackMode={() => handlePopUpToggle("snapshots", true)}
|
||||||
protectedBranchPolicyName={boardPolicy?.name}
|
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="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">
|
<div className="flex flex-col" id="dashboard">
|
||||||
|
|||||||
+20
-1
@@ -86,6 +86,7 @@ import { CreateDynamicSecretForm } from "./CreateDynamicSecretForm";
|
|||||||
import { CreateSecretImportForm } from "./CreateSecretImportForm";
|
import { CreateSecretImportForm } from "./CreateSecretImportForm";
|
||||||
import { FolderForm } from "./FolderForm";
|
import { FolderForm } from "./FolderForm";
|
||||||
import { MoveSecretsModal } from "./MoveSecretsModal";
|
import { MoveSecretsModal } from "./MoveSecretsModal";
|
||||||
|
import { CollapsibleSecretImports } from "../SecretListView/CollapsibleSecretImports";
|
||||||
|
|
||||||
type TParsedEnv = Record<string, { value: string; comments: string[]; secretPath?: string }>;
|
type TParsedEnv = Record<string, { value: string; comments: string[]; secretPath?: string }>;
|
||||||
type TParsedFolderEnv = Record<
|
type TParsedFolderEnv = Record<
|
||||||
@@ -112,6 +113,14 @@ type Props = {
|
|||||||
onVisibilityToggle: () => void;
|
onVisibilityToggle: () => void;
|
||||||
onToggleRowType: (rowType: RowType) => void;
|
onToggleRowType: (rowType: RowType) => void;
|
||||||
onClickRollbackMode: () => void;
|
onClickRollbackMode: () => void;
|
||||||
|
importedBy?: {
|
||||||
|
environment: { name: string; slug: string };
|
||||||
|
folders: {
|
||||||
|
name: string;
|
||||||
|
secrets?: { secretId: string; referencedSecretKey: string }[];
|
||||||
|
isImported: boolean;
|
||||||
|
}[];
|
||||||
|
}[];
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ActionBar = ({
|
export const ActionBar = ({
|
||||||
@@ -129,7 +138,8 @@ export const ActionBar = ({
|
|||||||
onVisibilityToggle,
|
onVisibilityToggle,
|
||||||
onClickRollbackMode,
|
onClickRollbackMode,
|
||||||
onToggleRowType,
|
onToggleRowType,
|
||||||
protectedBranchPolicyName
|
protectedBranchPolicyName,
|
||||||
|
importedBy
|
||||||
}: Props) => {
|
}: Props) => {
|
||||||
const { handlePopUpOpen, handlePopUpToggle, handlePopUpClose, popUp } = usePopUp([
|
const { handlePopUpOpen, handlePopUpToggle, handlePopUpClose, popUp } = usePopUp([
|
||||||
"addFolder",
|
"addFolder",
|
||||||
@@ -1059,6 +1069,15 @@ export const ActionBar = ({
|
|||||||
title="Do you want to delete these secrets?"
|
title="Do you want to delete these secrets?"
|
||||||
onChange={(isOpen) => handlePopUpToggle("bulkDeleteSecrets", isOpen)}
|
onChange={(isOpen) => handlePopUpToggle("bulkDeleteSecrets", isOpen)}
|
||||||
onDeleteApproved={handleSecretBulkDelete}
|
onDeleteApproved={handleSecretBulkDelete}
|
||||||
|
formContent={
|
||||||
|
importedBy &&
|
||||||
|
importedBy.length > 0 && (
|
||||||
|
<CollapsibleSecretImports
|
||||||
|
importedBy={importedBy}
|
||||||
|
secretsToDelete={Object.values(selectedSecrets).map((s) => s.key)}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
<MoveSecretsModal
|
<MoveSecretsModal
|
||||||
popUp={popUp}
|
popUp={popUp}
|
||||||
|
|||||||
+3
-3
@@ -28,12 +28,12 @@ interface CollapsibleSecretImportsProps {
|
|||||||
isImported: boolean;
|
isImported: boolean;
|
||||||
}[];
|
}[];
|
||||||
}[];
|
}[];
|
||||||
secretToDelete: string;
|
secretsToDelete: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export const CollapsibleSecretImports: React.FC<CollapsibleSecretImportsProps> = ({
|
export const CollapsibleSecretImports: React.FC<CollapsibleSecretImportsProps> = ({
|
||||||
importedBy = [],
|
importedBy = [],
|
||||||
secretToDelete
|
secretsToDelete
|
||||||
}) => {
|
}) => {
|
||||||
const { currentWorkspace } = useWorkspace();
|
const { currentWorkspace } = useWorkspace();
|
||||||
|
|
||||||
@@ -83,7 +83,7 @@ export const CollapsibleSecretImports: React.FC<CollapsibleSecretImportsProps> =
|
|||||||
if (folder.secrets?.length) {
|
if (folder.secrets?.length) {
|
||||||
folder.secrets.forEach(({ secretId: secret, referencedSecretKey }) => {
|
folder.secrets.forEach(({ secretId: secret, referencedSecretKey }) => {
|
||||||
const secretPath = folder.name === "/" ? `/${secret}` : `${folder.name}/${secret}`;
|
const secretPath = folder.name === "/" ? `/${secret}` : `${folder.name}/${secret}`;
|
||||||
if (referencedSecretKey === secretToDelete) {
|
if (secretsToDelete.includes(referencedSecretKey)) {
|
||||||
items.push({
|
items.push({
|
||||||
type: ItemType.Secret,
|
type: ItemType.Secret,
|
||||||
path: secretPath,
|
path: secretPath,
|
||||||
|
|||||||
+1
-1
@@ -372,7 +372,7 @@ export const SecretListView = ({
|
|||||||
importedBy.length > 0 && (
|
importedBy.length > 0 && (
|
||||||
<CollapsibleSecretImports
|
<CollapsibleSecretImports
|
||||||
importedBy={importedBy}
|
importedBy={importedBy}
|
||||||
secretToDelete={(popUp.deleteSecret?.data as SecretV3RawSanitized)?.key}
|
secretsToDelete={[(popUp.deleteSecret?.data as SecretV3RawSanitized)?.key || ""]}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user