type $TSFixMe = any function iconImage() { return ( ) } function iconAudio() { return ( ) } function iconVideo() { return ( ) } function iconPDF() { return ( ) } function iconArchive() { return ( ) } function iconFile() { return ( ) } function iconText() { return ( ) } export default function getIconByMime(fileType: $TSFixMe): $TSFixMe { const defaultChoice = { color: '#838999', icon: iconFile(), } if (!fileType) return defaultChoice const fileTypeGeneral = fileType.split('/')[0] const fileTypeSpecific = fileType.split('/')[1] // Text if (fileTypeGeneral === 'text') { return { color: '#5a5e69', icon: iconText(), } } // Image if (fileTypeGeneral === 'image') { return { color: '#686de0', icon: iconImage(), } } // Audio if (fileTypeGeneral === 'audio') { return { color: '#068dbb', icon: iconAudio(), } } // Video if (fileTypeGeneral === 'video') { return { color: '#19af67', icon: iconVideo(), } } // PDF if (fileTypeGeneral === 'application' && fileTypeSpecific === 'pdf') { return { color: '#e25149', icon: iconPDF(), } } // Archive const archiveTypes = [ 'zip', 'x-7z-compressed', 'x-zip-compressed', 'x-rar-compressed', 'x-tar', 'x-gzip', 'x-apple-diskimage', ] if ( fileTypeGeneral === 'application' && archiveTypes.indexOf(fileTypeSpecific) !== -1 ) { return { color: '#00C469', icon: iconArchive(), } } return defaultChoice }