From bc475e0f08f71075868c9b2c0cadf41719984a0b Mon Sep 17 00:00:00 2001 From: Sheen Capadngan Date: Fri, 27 Sep 2024 22:18:47 +0800 Subject: [PATCH] misc: added proper notifs for paths with policies in overview --- .../SecretOverviewPage/SecretOverviewPage.tsx | 54 ++++++++++---- .../CreateSecretForm/CreateSecretForm.tsx | 72 ++++++++++++++----- 2 files changed, 92 insertions(+), 34 deletions(-) diff --git a/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx b/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx index 30fd9dd18..972210bdf 100644 --- a/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx +++ b/frontend/src/views/SecretOverviewPage/SecretOverviewPage.tsx @@ -351,7 +351,7 @@ export const SecretOverviewPage = () => { }); } } - await createSecretV3({ + const result = await createSecretV3({ environment: env, workspaceId, secretPath, @@ -360,10 +360,18 @@ export const SecretOverviewPage = () => { secretComment: "", type: SecretType.Shared }); - createNotification({ - type: "success", - text: "Successfully created secret" - }); + + if ("approval" in result) { + createNotification({ + type: "info", + text: "Requested change has been sent for review" + }); + } else { + createNotification({ + type: "success", + text: "Successfully created secret" + }); + } } catch (error) { console.log(error); createNotification({ @@ -388,7 +396,7 @@ export const SecretOverviewPage = () => { type = SecretType.Shared ) => { try { - await updateSecretV3({ + const result = await updateSecretV3({ environment: env, workspaceId, secretPath, @@ -396,10 +404,18 @@ export const SecretOverviewPage = () => { secretValue: value, type }); - createNotification({ - type: "success", - text: "Successfully updated secret" - }); + + if ("approval" in result) { + createNotification({ + type: "info", + text: "Requested change has been sent for review" + }); + } else { + createNotification({ + type: "success", + text: "Successfully updated secret" + }); + } } catch (error) { console.log(error); createNotification({ @@ -411,7 +427,7 @@ export const SecretOverviewPage = () => { const handleSecretDelete = async (env: string, key: string, secretId?: string) => { try { - await deleteSecretV3({ + const result = await deleteSecretV3({ environment: env, workspaceId, secretPath, @@ -419,10 +435,18 @@ export const SecretOverviewPage = () => { secretId, type: SecretType.Shared }); - createNotification({ - type: "success", - text: "Successfully deleted secret" - }); + + if ("approval" in result) { + createNotification({ + type: "info", + text: "Requested change has been sent for review" + }); + } else { + createNotification({ + type: "success", + text: "Successfully deleted secret" + }); + } } catch (error) { console.log(error); createNotification({ diff --git a/frontend/src/views/SecretOverviewPage/components/CreateSecretForm/CreateSecretForm.tsx b/frontend/src/views/SecretOverviewPage/components/CreateSecretForm/CreateSecretForm.tsx index 47de536a6..8e6ad9897 100644 --- a/frontend/src/views/SecretOverviewPage/components/CreateSecretForm/CreateSecretForm.tsx +++ b/frontend/src/views/SecretOverviewPage/components/CreateSecretForm/CreateSecretForm.tsx @@ -122,42 +122,76 @@ export const CreateSecretForm = ({ const isEdit = getSecretByKey(environment, key) !== undefined; if (isEdit) { - return updateSecretV3({ + return { + ...(await updateSecretV3({ + environment, + workspaceId, + secretPath, + secretKey: key, + secretValue: value || "", + type: SecretType.Shared + })), + environment + }; + } + + return { + ...(await createSecretV3({ environment, workspaceId, secretPath, secretKey: key, secretValue: value || "", + secretComment: "", type: SecretType.Shared - }); - } - - return createSecretV3({ - environment, - workspaceId, - secretPath, - secretKey: key, - secretValue: value || "", - secretComment: "", - type: SecretType.Shared - }); + })), + environment + }; }); const results = await Promise.allSettled(promises); - const isSecretsAdded = results.some((result) => result.status === "fulfilled"); + const forApprovalEnvs = results + .map((result) => + result.status === "fulfilled" && "approval" in result.value + ? result.value.environment + : undefined + ) + .filter(Boolean) as string[]; - if (isSecretsAdded) { + const updatedEnvs = results + .map((result) => + result.status === "fulfilled" && !("approval" in result.value) + ? result.value.environment + : undefined + ) + .filter(Boolean) as string[]; + + if (forApprovalEnvs.length) { + createNotification({ + type: "info", + text: `Change request submitted for ${ + forApprovalEnvs.length > 1 ? "environments" : "environment" + }: ${forApprovalEnvs.join(", ")}` + }); + } + + if (updatedEnvs.length) { createNotification({ type: "success", - text: "Secrets created successfully" + text: `Secrets created in ${ + updatedEnvs.length > 1 ? "environments" : "environment" + }: ${updatedEnvs.join(", ")}` }); - onClose(); - reset(); - } else { + } + + if (!updatedEnvs.length && !forApprovalEnvs.length) { createNotification({ type: "error", text: "Failed to create secrets" }); + } else { + onClose(); + reset(); } };