From e8fbf8b46a64b61c677922bf0da7d9763dfc104a Mon Sep 17 00:00:00 2001 From: bartoval Date: Wed, 26 Mar 2025 16:18:42 +0100 Subject: [PATCH] remove extension yaml if present in the filename --- src/console/core/utils/handleYamlFilename.ts | 10 ++++++++++ .../pages/components/forms/GrantForm/DownloadGrant.tsx | 6 ++++-- src/console/pages/tabs/Links/hooks/useLinks.ts | 5 ++++- 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 src/console/core/utils/handleYamlFilename.ts diff --git a/src/console/core/utils/handleYamlFilename.ts b/src/console/core/utils/handleYamlFilename.ts new file mode 100644 index 00000000..9b9f34db --- /dev/null +++ b/src/console/core/utils/handleYamlFilename.ts @@ -0,0 +1,10 @@ +export function handleYamlFilename(filename: string): string { + const yamlExtensions: string[] = ['.yaml', '.yml']; + const hasExtension: boolean = yamlExtensions.some((extension) => filename.toLowerCase().endsWith(extension)); + + if (hasExtension) { + return filename; + } + + return `${filename}.yaml`; +} diff --git a/src/console/pages/components/forms/GrantForm/DownloadGrant.tsx b/src/console/pages/components/forms/GrantForm/DownloadGrant.tsx index 41c7951d..9d698bbe 100644 --- a/src/console/pages/components/forms/GrantForm/DownloadGrant.tsx +++ b/src/console/pages/components/forms/GrantForm/DownloadGrant.tsx @@ -12,6 +12,7 @@ import { useTranslation } from 'react-i18next'; import { stringify } from 'yaml'; import { createAccessTokenRequest } from '../../../../core/utils/createCRD'; +import { handleYamlFilename } from '../../../../core/utils/handleYamlFilename'; import { AccessTokenCrdParams } from '../../../../interfaces/CRD_AccessToken'; export const DownloadGrant: FC<{ @@ -37,11 +38,12 @@ export const DownloadGrant: FC<{ }); const blob = new Blob([stringify(accessToken)], { type: 'application/json' }); + const filename = handleYamlFilename(accessToken.metadata.name); const link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); - link.download = `${accessToken.metadata.name}.yaml`; - link.setAttribute('download', `${accessToken.metadata.name}.yaml`); + link.download = filename; + link.setAttribute('download', filename); document.body.appendChild(link).click(); document.body.removeChild(link); diff --git a/src/console/pages/tabs/Links/hooks/useLinks.ts b/src/console/pages/tabs/Links/hooks/useLinks.ts index 521b819d..da95274b 100644 --- a/src/console/pages/tabs/Links/hooks/useLinks.ts +++ b/src/console/pages/tabs/Links/hooks/useLinks.ts @@ -3,6 +3,7 @@ import { AccessGrantCrdResponse } from '@interfaces/CRD_AccessGrant'; import { useMutation } from '@tanstack/react-query'; import { stringify } from 'yaml'; +import { handleYamlFilename } from '../../../../core/utils/handleYamlFilename'; import { useWatchedSkupperResource } from '../../../../hooks/useSkupperWatchResource'; export const useLinks = () => { @@ -44,9 +45,11 @@ export const useLinks = () => { const handleDownloadGrant = (grant: AccessGrantCrdResponse) => { if (grant?.status) { const blob = new Blob([stringify(grant)], { type: 'application/json' }); + const filename = handleYamlFilename(grant.metadata.name); + const link = document.createElement('a'); link.href = window.URL.createObjectURL(blob); - link.download = `${grant.metadata.name}.yaml`; + link.download = filename; document.body.appendChild(link).click(); document.body.removeChild(link); }