refactor to useCallback select instead of queryFn

This commit is contained in:
Scott Wilson
2024-09-12 22:47:23 -07:00
parent 3fe53d5183
commit f742bd01d9
2 changed files with 45 additions and 46 deletions
@@ -160,30 +160,32 @@ export const useGetImportedSecretsAllEnvs = ({
projectId, projectId,
path path
}), }),
queryFn: async () => { queryFn: () => fetchImportedSecrets(projectId, env, path).catch(() => []),
const data = await fetchImportedSecrets(projectId, env, path).catch(() => []); enabled: Boolean(projectId) && Boolean(env),
// eslint-disable-next-line react-hooks/rules-of-hooks
return data.map((el) => ({ select: useCallback(
environment: el.environment, (data: Awaited<ReturnType<typeof fetchImportedSecrets>>) =>
secretPath: el.secretPath, data.map((el) => ({
environmentInfo: el.environmentInfo, environment: el.environment,
folderId: el.folderId, secretPath: el.secretPath,
secrets: el.secrets.map((encSecret) => { environmentInfo: el.environmentInfo,
return { folderId: el.folderId,
id: encSecret.id, secrets: el.secrets.map((encSecret) => {
env: encSecret.environment, return {
key: encSecret.secretKey, id: encSecret.id,
value: encSecret.secretValue, env: encSecret.environment,
tags: encSecret.tags, key: encSecret.secretKey,
comment: encSecret.secretComment, value: encSecret.secretValue,
createdAt: encSecret.createdAt, tags: encSecret.tags,
updatedAt: encSecret.updatedAt, comment: encSecret.secretComment,
version: encSecret.version createdAt: encSecret.createdAt,
}; updatedAt: encSecret.updatedAt,
}) version: encSecret.version
})); };
}, })
enabled: Boolean(projectId) && Boolean(env) })),
[]
)
})) }))
}); });
+19 -22
View File
@@ -24,12 +24,6 @@ export const secretKeys = {
// this is also used in secretSnapshot part // this is also used in secretSnapshot part
getProjectSecret: ({ workspaceId, environment, secretPath }: TGetProjectSecretsKey) => getProjectSecret: ({ workspaceId, environment, secretPath }: TGetProjectSecretsKey) =>
[{ workspaceId, environment, secretPath }, "secrets"] as const, [{ workspaceId, environment, secretPath }, "secrets"] as const,
getProjectSecretAllEnvironments: ({
workspaceId,
environment,
secretPath
}: TGetProjectSecretsKey) =>
[...secretKeys.getProjectSecret({ workspaceId, environment, secretPath }), "all"] as const,
getSecretVersion: (secretId: string) => [{ secretId }, "secret-versions"] as const getSecretVersion: (secretId: string) => [{ secretId }, "secret-versions"] as const
}; };
@@ -101,7 +95,7 @@ export const useGetProjectSecrets = ({
}: TGetProjectSecretsDTO & { }: TGetProjectSecretsDTO & {
options?: Omit< options?: Omit<
UseQueryOptions< UseQueryOptions<
SecretV3RawSanitized[], SecretV3RawResponse,
unknown, unknown,
SecretV3RawSanitized[], SecretV3RawSanitized[],
ReturnType<typeof secretKeys.getProjectSecret> ReturnType<typeof secretKeys.getProjectSecret>
@@ -114,10 +108,7 @@ export const useGetProjectSecrets = ({
// wait for all values to be available // wait for all values to be available
enabled: Boolean(workspaceId && environment) && (options?.enabled ?? true), enabled: Boolean(workspaceId && environment) && (options?.enabled ?? true),
queryKey: secretKeys.getProjectSecret({ workspaceId, environment, secretPath }), queryKey: secretKeys.getProjectSecret({ workspaceId, environment, secretPath }),
queryFn: async () => { queryFn: () => fetchProjectSecrets({ workspaceId, environment, secretPath }),
const resp = await fetchProjectSecrets({ workspaceId, environment, secretPath });
return mergePersonalSecrets(resp.secrets);
},
onError: (error) => { onError: (error) => {
if (axios.isAxiosError(error)) { if (axios.isAxiosError(error)) {
const serverResponse = error.response?.data as { message: string }; const serverResponse = error.response?.data as { message: string };
@@ -127,7 +118,11 @@ export const useGetProjectSecrets = ({
text: serverResponse.message text: serverResponse.message
}); });
} }
} },
select: useCallback(
(data: Awaited<ReturnType<typeof fetchProjectSecrets>>) => mergePersonalSecrets(data.secrets),
[]
)
}); });
export const useGetProjectSecretsAllEnv = ({ export const useGetProjectSecretsAllEnv = ({
@@ -139,7 +134,7 @@ export const useGetProjectSecretsAllEnv = ({
const secrets = useQueries({ const secrets = useQueries({
queries: envs.map((environment) => ({ queries: envs.map((environment) => ({
queryKey: secretKeys.getProjectSecretAllEnvironments({ queryKey: secretKeys.getProjectSecret({
workspaceId, workspaceId,
environment, environment,
secretPath secretPath
@@ -159,15 +154,17 @@ export const useGetProjectSecretsAllEnv = ({
setIsErrorHandled.on(); setIsErrorHandled.on();
} }
}, },
queryFn: async () => { queryFn: () => fetchProjectSecrets({ workspaceId, environment, secretPath }),
const resp = await fetchProjectSecrets({ workspaceId, environment, secretPath }); staleTime: 60 * 1000,
// eslint-disable-next-line react-hooks/rules-of-hooks
return mergePersonalSecrets(resp.secrets).reduce<Record<string, SecretV3RawSanitized>>( select: useCallback(
(prev, curr) => ({ ...prev, [curr.key]: curr }), (data: Awaited<ReturnType<typeof fetchProjectSecrets>>) =>
{} mergePersonalSecrets(data.secrets).reduce<Record<string, SecretV3RawSanitized>>(
); (prev, curr) => ({ ...prev, [curr.key]: curr }),
}, {}
staleTime: 5 * 60 * 1000 ),
[]
)
})) }))
}); });