|
- const MIME_TYPE_DESCRIPTIONS = {
- 'image/gif': 'GIF Image',
- 'image/jpeg': 'JPEG Image',
- 'image/png': 'PNG Image',
- 'image/tiff': 'TIFF Image',
- 'image/svg+xml': 'SVG Image',
- 'image/webp': 'WEBP Image',
- 'audio/wav': 'WAVE Audio',
- 'audio/ogg': 'OGG Audio',
- 'audio/mpeg': 'MPEG Audio',
- 'audio/mid': 'MIDI Track',
- 'application/json': 'JSON Data',
- 'application/xml': 'XML Data',
- 'application/x-bittorrent': 'Torrent File',
- 'application/x-zip-compressed': 'Compressed ZIP Archive',
- 'application/x-x509-ca-cert': 'Certificate File',
- 'application/x-tar': 'Compressed TAR Archive',
- 'application/x-rar': 'Compressed RAR Archive',
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'Workbook',
- 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'Slideshow Presentation',
- 'application/msword': 'Microsoft Word Document',
- 'application/pdf': 'PDF Document',
- 'application/postscript': 'PostScript Document',
- 'application/epub+zip': 'EPUB Document',
- 'message/rfc822': 'Email Message',
- 'video/mp4': 'MP4 Video',
- } as const;
-
- const EXTENSION_DESCRIPTIONS = {
- rar: 'Compressed RAR Archive',
- '7z': 'Compressed 7-Zip Archive',
- psd: 'Adobe Photoshop Document',
- dmg: 'Disk Image',
- 'fb2k-component': 'foobar2000 Component',
- } as const;
-
- export const getFileDescription = (type?: string, filename?: string) => {
- if (typeof (type as unknown) !== 'string') {
- return '';
- }
-
- if (type === 'application/octet-stream' || type === '') {
- if (typeof filename === 'string' && filename.includes('.')) {
- const extension = filename.slice(filename.lastIndexOf('.') + '.'.length).toLowerCase();
- const {
- [extension as keyof typeof EXTENSION_DESCRIPTIONS]: extensionDescription = `${extension.toUpperCase()} File`,
- } = EXTENSION_DESCRIPTIONS;
-
- return extensionDescription;
- }
- return `${type} File`;
- }
-
- const {
- [type as keyof typeof MIME_TYPE_DESCRIPTIONS]: description = type,
- } = MIME_TYPE_DESCRIPTIONS;
-
- return description;
- };
|