fix download service (#8662) (#8729)

This commit is contained in:
Vault Automation 2025-10-16 18:02:58 -04:00 committed by GitHub
parent f39bb43a4c
commit 1df0bb7ddd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -28,25 +28,27 @@ const EXTENSION_TO_MIME: Extensions = {
};
export default class DownloadService extends Service {
download(filename: string, content: string, extension: string) {
// replace spaces with hyphens, append extension to filename
const formattedFilename =
`${filename?.replace(/\s+/g, '-')}.${extension}` ||
`vault-data-${timestamp.now().toISOString()}.${extension}`;
formatFilename(filename: string, extension: keyof Extensions = 'txt') {
const downloadTimestamp = timestamp.now().toISOString();
// replace spaces with underscores
const name = filename ? filename?.replace(/\s+/g, '_') : 'vault_data';
// appends extension to filename
return `${name}_${downloadTimestamp}.${extension}`;
}
download(filename: string, content: any, extension: keyof Extensions) {
const formattedFilename = this.formatFilename(filename, extension);
// map extension to MIME type or use default
const mimetype = EXTENSION_TO_MIME[extension as keyof Extensions] || 'text/plain';
const mimetype = EXTENSION_TO_MIME[extension] || 'text/plain';
// commence download
const { document, URL } = window;
const downloadElement = document.createElement('a');
const data = new File([content], formattedFilename, { type: mimetype });
downloadElement.download = formattedFilename;
downloadElement.href = URL.createObjectURL(data);
document.body.appendChild(downloadElement);
downloadElement.click();
URL.revokeObjectURL(downloadElement.href);
downloadElement.remove();
return formattedFilename;
}
@ -63,7 +65,7 @@ export default class DownloadService extends Service {
this.download(filename, content, 'pem');
}
miscExtension(filename: string, content: string, extension: string) {
miscExtension(filename: string, content: string, extension: keyof Extensions) {
this.download(filename, content, extension);
}
}