Rework of secret imports on overview page

This commit is contained in:
carlosmonastyrski
2025-03-18 16:26:15 -03:00
parent e67a8f9c05
commit 633a2ae985
9 changed files with 243 additions and 236 deletions
+7 -1
View File
@@ -143,6 +143,7 @@ export const useGetProjectSecretsOverview = (
search = "",
includeSecrets,
includeFolders,
includeImports,
includeDynamicSecrets,
environments
}: TGetDashboardProjectSecretsOverviewDTO,
@@ -170,6 +171,7 @@ export const useGetProjectSecretsOverview = (
projectId,
includeSecrets,
includeFolders,
includeImports,
includeDynamicSecrets,
environments
}),
@@ -184,6 +186,7 @@ export const useGetProjectSecretsOverview = (
projectId,
includeSecrets,
includeFolders,
includeImports,
includeDynamicSecrets,
environments
}),
@@ -197,12 +200,15 @@ export const useGetProjectSecretsOverview = (
? unique(select.dynamicSecrets, (i) => i.name)
: [];
const uniqueSecretImports = select.imports ? unique(select.imports, (i) => i.id) : [];
return {
...select,
secrets: secrets ? mergePersonalSecrets(secrets) : undefined,
totalUniqueSecretsInPage: uniqueSecrets.length,
totalUniqueDynamicSecretsInPage: uniqueDynamicSecrets.length,
totalUniqueFoldersInPage: uniqueFolders.length
totalUniqueFoldersInPage: uniqueFolders.length,
totalUniqueSecretImportsInPage: uniqueSecretImports.length
};
}, []),
placeholderData: (previousData) => previousData
@@ -9,13 +9,16 @@ export type DashboardProjectSecretsOverviewResponse = {
folders?: (TSecretFolder & { environment: string })[];
dynamicSecrets?: (TDynamicSecret & { environment: string })[];
secrets?: SecretV3Raw[];
imports?: TSecretImport[];
totalSecretCount?: number;
totalFolderCount?: number;
totalDynamicSecretCount?: number;
totalImportCount?: number;
totalCount: number;
totalUniqueSecretsInPage: number;
totalUniqueDynamicSecretsInPage: number;
totalUniqueFoldersInPage: number;
totalUniqueSecretImportsInPage: number;
};
export type DashboardProjectSecretsDetailsResponse = {
@@ -63,6 +66,7 @@ export type TGetDashboardProjectSecretsOverviewDTO = {
includeSecrets?: boolean;
includeFolders?: boolean;
includeDynamicSecrets?: boolean;
includeImports?: boolean;
environments: string[];
};
+1 -28
View File
@@ -14,6 +14,7 @@ export type TSecretImport = {
isReplicationSuccess?: boolean;
replicationStatus?: string;
lastReplicated?: string;
environment?: string;
};
export type TGetImportedFoldersByEnvDTO = {
@@ -90,31 +91,3 @@ export type TDeleteSecretImportDTO = {
environment: string;
path?: string;
};
export type TSecretImportMultiEnvData = {
currentEnv: string;
environment: string;
secretPath: string;
environmentInfo: WorkspaceEnv;
folderId: string;
secrets: {
id: string;
env: string;
key: string;
value: string;
secretValueHidden: boolean;
tags?: {
id: string;
slug: string;
color?: string;
projectId: string;
createdAt: string;
updatedAt: string;
__v: number;
}[];
comment?: string;
createdAt: string;
updatedAt: string;
version: number;
}[];
};
@@ -1,7 +1,6 @@
import { useCallback, useMemo } from "react";
import { DashboardProjectSecretsOverview } from "@app/hooks/api/dashboard/types";
import { TSecretImportMultiEnvData } from "@app/hooks/api/secretImports/types";
type FolderNameAndDescription = {
name: string;
@@ -97,37 +96,3 @@ export const useSecretOverview = (secrets: DashboardProjectSecretsOverview["secr
return { secKeys, getSecretByKey, getEnvSecretKeyCount };
};
export const useSecretImportOverview = (secretImports: TSecretImportMultiEnvData[] | undefined) => {
const uniqueEnvSecretPaths = useMemo(() => {
const uniqueMap = new Map<string, TSecretImportMultiEnvData>();
secretImports?.forEach((importData) => {
if (importData) {
const key = `${importData.environment}-${importData.secretPath}`;
if (!uniqueMap.has(key)) {
uniqueMap.set(key, importData);
}
}
});
return Array.from(uniqueMap.values());
}, [secretImports]);
const isSecretImportPresent = useCallback(
(sourceEnv: string, targetEnv: string, secretPath: string) => {
return (
secretImports?.some(
(importData) =>
importData?.currentEnv === sourceEnv &&
importData?.environment === targetEnv &&
importData?.secretPath === secretPath
) ?? false
);
},
[secretImports]
);
return {
uniqueEnvSecretPaths,
isSecretImportPresent
};
};