diff --git a/backend/src/services/secret-import/secret-import-fns.ts b/backend/src/services/secret-import/secret-import-fns.ts index c739c5ad2..42c135c88 100644 --- a/backend/src/services/secret-import/secret-import-fns.ts +++ b/backend/src/services/secret-import/secret-import-fns.ts @@ -258,10 +258,6 @@ export const fnSecretsV2FromImports = async ({ })[]; }[] = [{ secretImports: rootSecretImports, depth: 0, parentImportedSecrets: [] }]; - const processedSecretImports = await processReservedImports(rootSecretImports, secretImportDAL); - - stack[0] = { secretImports: processedSecretImports, depth: 0, parentImportedSecrets: [] }; - const processedImports: TSecretImportSecretsV2[] = []; while (stack.length) { @@ -299,7 +295,9 @@ export const fnSecretsV2FromImports = async ({ ); const importedSecretsGroupByFolderId = groupBy(importedSecrets, (i) => i.folderId); - sanitizedImports.forEach(({ importPath, importEnv }) => { + const processedBatchImports = await processReservedImports(sanitizedImports, secretImportDAL); + + processedBatchImports.forEach(({ importPath, importEnv }) => { cyclicDetector.add(getImportUniqKey(importEnv.slug, importPath)); }); // now we need to check recursively deeper imports made inside other imports @@ -308,7 +306,7 @@ export const fnSecretsV2FromImports = async ({ const deeperImportsGroupByFolderId = groupBy(deeperImports, (i) => i.folderId); const isFirstIteration = !processedImports.length; - sanitizedImports.forEach(({ importPath, importEnv, id, folderId }, i) => { + processedBatchImports.forEach(({ importPath, importEnv, id, folderId }, i) => { const sourceImportFolder = importedFolderGroupBySourceImport[`${importEnv.id}-${importPath}`]?.[0]; const secretsWithDuplicate = (importedSecretsGroupByFolderId?.[importedFolders?.[i]?.id as string] || []) .filter((item) => diff --git a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretImportListView/SecretImportListView.tsx b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretImportListView/SecretImportListView.tsx index 7fbbc9436..be492f494 100644 --- a/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretImportListView/SecretImportListView.tsx +++ b/frontend/src/pages/secret-manager/SecretDashboardPage/components/SecretImportListView/SecretImportListView.tsx @@ -33,11 +33,15 @@ type TImportedSecrets = Array<{ }>; export const computeImportedSecretRows = ( - importedSecEnv: string, - importedSecPath: string, + secretImport: TSecretImport, importSecrets: TImportedSecrets = [], - secrets: SecretV3RawSanitized[] = [] + secrets: SecretV3RawSanitized[] = [], + replicatedFolder?: TSecretImport ) => { + const importedSecEnv = replicatedFolder?.importEnv.slug ?? secretImport.importEnv.slug; + const importedSecPath = replicatedFolder?.importPath ?? secretImport.importPath; + const overrideEnv = secretImport.isReserved ? secretImport.importEnv.slug : undefined; + const overridePath = secretImport.isReserved ? secretImport.importPath : undefined; const importedSecIndex = importSecrets.findIndex( ({ secretPath, environmentInfo }) => secretPath === importedSecPath && importedSecEnv === environmentInfo.slug @@ -73,13 +77,13 @@ export const computeImportedSecretRows = ( isEmpty?: boolean; }[] = []; - importedSec.secrets.forEach(({ key, value, env, path, isEmpty }) => { + importedSec.secrets.forEach(({ key, value, isEmpty }) => { if (!importedEntry[key]) { importedSecretEntries.push({ key, value, - environment: env, - secretPath: path, + environment: overrideEnv ?? importedSec.environmentInfo.slug, + secretPath: overridePath ?? importedSec.secretPath, overridden: overridenSec?.[key], isEmpty }); @@ -125,6 +129,12 @@ export const SecretImportListView = ({ const [items, setItems] = useState(secretImports ?? []); + const getImportReplicatedFolder = (importPath: string) => { + const cleanImportPath = importPath.replace("/__reserve_replication_", ""); + const replicatedFolder = items?.find(({ id }) => id === cleanImportPath); + return replicatedFolder; + }; + useEffect(() => { if (!isFetching) { setItems(secretImports ?? []); @@ -204,6 +214,9 @@ export const SecretImportListView = ({ {items?.map((item) => { // TODO(akhilmhdh): change this and pass this whole object instead of one by one + const replicatedFolder = item.isReserved + ? getImportReplicatedFolder(item.importPath) + : undefined; return (