37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
/**
|
|
* Gets a display label for a file type from various input formats
|
|
*
|
|
* Handles:
|
|
* - MIME types: 'application/pdf' → 'PDF'
|
|
* - AttachmentType values: 'PDF', 'AUDIO' → 'PDF', 'AUDIO'
|
|
* - File names: 'document.pdf' → 'PDF'
|
|
* - Unknown: returns 'FILE'
|
|
*
|
|
* @param input - MIME type, AttachmentType value, or file name
|
|
* @returns Formatted file type label (uppercase)
|
|
*/
|
|
export function getFileTypeLabel(input: string | undefined): string {
|
|
if (!input) return 'FILE';
|
|
|
|
// Handle MIME types (contains '/')
|
|
if (input.includes('/')) {
|
|
const subtype = input.split('/').pop();
|
|
if (subtype) {
|
|
// Handle special cases like 'vnd.ms-excel' → 'EXCEL'
|
|
if (subtype.includes('.')) {
|
|
return subtype.split('.').pop()?.toUpperCase() || 'FILE';
|
|
}
|
|
return subtype.toUpperCase();
|
|
}
|
|
}
|
|
|
|
// Handle file names (contains '.')
|
|
if (input.includes('.')) {
|
|
const ext = input.split('.').pop();
|
|
if (ext) return ext.toUpperCase();
|
|
}
|
|
|
|
// Handle AttachmentType or other plain strings
|
|
return input.toUpperCase();
|
|
}
|