diff --git a/frontend/src/hooks/api/secretImports/queries.tsx b/frontend/src/hooks/api/secretImports/queries.tsx
index dfc8c6497..ea6ea68ef 100644
--- a/frontend/src/hooks/api/secretImports/queries.tsx
+++ b/frontend/src/hooks/api/secretImports/queries.tsx
@@ -182,7 +182,8 @@ export const useGetImportedSecretsAllEnvs = ({
comment: encSecret.secretComment,
createdAt: encSecret.createdAt,
updatedAt: encSecret.updatedAt,
- version: encSecret.version
+ version: encSecret.version,
+ sourceEnv: env
};
})
})),
diff --git a/frontend/src/hooks/utils/secrets-overview.tsx b/frontend/src/hooks/utils/secrets-overview.tsx
index 89fc679c4..75b389612 100644
--- a/frontend/src/hooks/utils/secrets-overview.tsx
+++ b/frontend/src/hooks/utils/secrets-overview.tsx
@@ -86,13 +86,5 @@ export const useSecretOverview = (secrets: DashboardProjectSecretsOverview["secr
[secrets]
);
- const getSecretByKey = useCallback(
- (env: string, key: string) => {
- const sec = secrets?.find((s) => s.env === env && s.key === key);
- return sec;
- },
- [secrets]
- );
-
- return { secKeys, getSecretByKey, getEnvSecretKeyCount };
+ return { secKeys, getEnvSecretKeyCount };
};
diff --git a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx
index 8fb90243b..67baecb15 100644
--- a/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx
+++ b/frontend/src/pages/secret-manager/OverviewPage/OverviewPage.tsx
@@ -81,7 +81,6 @@ import { CreateSecretForm } from "./components/CreateSecretForm";
import { FolderBreadCrumbs } from "./components/FolderBreadCrumbs";
import { SecretOverviewDynamicSecretRow } from "./components/SecretOverviewDynamicSecretRow";
import { SecretOverviewFolderRow } from "./components/SecretOverviewFolderRow";
-import { SecretOverviewImportListView } from "./components/SecretOverviewImportListView";
import {
SecretNoAccessOverviewTableRow,
SecretOverviewTableRow
@@ -203,12 +202,16 @@ export const OverviewPage = () => {
setVisibleEnvs(userAvailableEnvs);
}, [userAvailableEnvs]);
- const { isImportedSecretPresentInEnv, getImportedSecretByKey, getEnvImportedSecretKeyCount } =
- useGetImportedSecretsAllEnvs({
- projectId: workspaceId,
- path: secretPath,
- environments: (userAvailableEnvs || []).map(({ slug }) => slug)
- });
+ const {
+ secretImports,
+ isImportedSecretPresentInEnv,
+ getImportedSecretByKey,
+ getEnvImportedSecretKeyCount
+ } = useGetImportedSecretsAllEnvs({
+ projectId: workspaceId,
+ path: secretPath,
+ environments: (userAvailableEnvs || []).map(({ slug }) => slug)
+ });
const { isPending: isOverviewLoading, data: overview } = useGetProjectSecretsOverview(
{
@@ -232,7 +235,6 @@ export const OverviewPage = () => {
secrets,
folders,
dynamicSecrets,
- imports,
totalFolderCount,
totalSecretCount,
totalDynamicSecretCount,
@@ -244,16 +246,20 @@ export const OverviewPage = () => {
totalUniqueDynamicSecretsInPage
} = overview ?? {};
- const importsShaped = imports
- ?.filter((el) => !el.isReserved)
- ?.map(({ importPath, importEnv }) => ({ importPath, importEnv }))
- .filter(
- (el, index, self) =>
- index ===
- self.findIndex(
- (item) => item.importPath === el.importPath && item.importEnv.slug === el.importEnv.slug
- )
- );
+ const secretImportsShaped = secretImports
+ ?.flatMap(({ data }) => data)
+ .filter(Boolean)
+ .flatMap((item) => item?.secrets || []);
+
+ const handleIsImportedSecretPresentInEnv = (envSlug: string, secretName: string) => {
+ if (secrets?.some((s) => s.key === secretName && s.env === envSlug)) {
+ return false;
+ }
+ if (secretImportsShaped.some((s) => s.key === secretName && s.sourceEnv === envSlug)) {
+ return true;
+ }
+ return isImportedSecretPresentInEnv(envSlug, secretName);
+ };
useResetPageHelper({
totalCount,
@@ -267,7 +273,18 @@ export const OverviewPage = () => {
const { dynamicSecretNames, isDynamicSecretPresentInEnv } =
useDynamicSecretOverview(dynamicSecrets);
- const { secKeys, getSecretByKey, getEnvSecretKeyCount } = useSecretOverview(secrets);
+ const { secKeys, getEnvSecretKeyCount } = useSecretOverview(
+ secrets?.concat(secretImportsShaped) || []
+ );
+
+ const getSecretByKey = useCallback(
+ (env: string, key: string) => {
+ const sec = secrets?.find((s) => s.env === env && s.key === key);
+ return sec;
+ },
+ [secrets]
+ );
+
const { data: tags } = useGetWsTags(
permission.can(ProjectPermissionActions.Read, ProjectPermissionSub.Tags) ? workspaceId : ""
);
@@ -1124,24 +1141,13 @@ export const OverviewPage = () => {
key={`overview-${dynamicSecretName}-${index + 1}`}
/>
))}
- {filter.import &&
- importsShaped &&
- importsShaped?.length > 0 &&
- importsShaped?.map((item, index) => (
-
- ))}
{secKeys.map((key, index) => (
toggleSelectedEntry(EntryType.SECRET, key)}
secretPath={secretPath}
getImportedSecretByKey={getImportedSecretByKey}
- isImportedSecretPresentInEnv={isImportedSecretPresentInEnv}
+ isImportedSecretPresentInEnv={handleIsImportedSecretPresentInEnv}
onSecretCreate={handleSecretCreate}
onSecretDelete={handleSecretDelete}
onSecretUpdate={handleSecretUpdate}
diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewImportListView/SecretOverviewImportListView.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewImportListView/SecretOverviewImportListView.tsx
deleted file mode 100644
index e646362b8..000000000
--- a/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewImportListView/SecretOverviewImportListView.tsx
+++ /dev/null
@@ -1,85 +0,0 @@
-import { faCheck, faFileImport, faXmark } from "@fortawesome/free-solid-svg-icons";
-import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
-import { twMerge } from "tailwind-merge";
-
-import { Td, Tr } from "@app/components/v2";
-import { TSecretImport, WorkspaceEnv } from "@app/hooks/api/types";
-import { EnvFolderIcon } from "@app/pages/secret-manager/SecretDashboardPage/components/SecretImportListView/SecretImportItem";
-
-type Props = {
- secretImport: { importPath: string; importEnv: WorkspaceEnv };
- environments: { name: string; slug: string }[];
- allSecretImports?: TSecretImport[];
-};
-
-export const SecretOverviewImportListView = ({
- secretImport,
- environments = [],
- allSecretImports = []
-}: Props) => {
- const isSecretPresentInEnv = (envSlug: string) => {
- return allSecretImports.some((item) => {
- if (item.isReplication) {
- if (
- item.importPath === secretImport.importPath &&
- item.importEnv.slug === secretImport.importEnv.slug
- ) {
- const reservedItem = allSecretImports.find((element) =>
- element.importPath.includes(`__reserve_replication_${item.id}`)
- );
- // If the reserved item exists, check if the envSlug matches
- if (reservedItem) {
- return reservedItem.environment === envSlug;
- }
- }
- } else {
- // If the item is not replication, check if the envSlug matches directly
- return (
- item.environment === envSlug &&
- item.importPath === secretImport.importPath &&
- item.importEnv.slug === secretImport.importEnv.slug
- );
- }
- return false;
- });
- };
-
- return (
-
- |
-
- |
- {environments.map(({ slug }, i) => {
- const isPresent = isSecretPresentInEnv(slug);
- return (
-
-
- |
- );
- })}
-
- );
-};
diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewImportListView/index.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewImportListView/index.tsx
deleted file mode 100644
index daf7f71b4..000000000
--- a/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewImportListView/index.tsx
+++ /dev/null
@@ -1 +0,0 @@
-export { SecretOverviewImportListView } from "./SecretOverviewImportListView";
diff --git a/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewTableRow/SecretRenameRow.tsx b/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewTableRow/SecretRenameRow.tsx
index ce2e43f67..d15e96a91 100644
--- a/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewTableRow/SecretRenameRow.tsx
+++ b/frontend/src/pages/secret-manager/OverviewPage/components/SecretOverviewTableRow/SecretRenameRow.tsx
@@ -162,7 +162,7 @@ function SecretRenameRow({ environments, getSecretByKey, secretKey, secretPath }
render={({ field, fieldState: { error } }) => (