webapp/src/utils/validateFile.ts
Ilya Y 784bb435c3
Feature/lint (#317)
* prettier

---------

Co-authored-by: Igor Lobanov <igor.lobanov@onetwotrip.com>
2023-11-14 18:10:00 +03:00

43 lines
1.1 KiB
TypeScript

import { UploadFile } from '@solid-primitives/upload'
import { FileTypeToUpload } from '../pages/types'
export const validateFiles = (fileType: FileTypeToUpload, files: UploadFile[]): boolean => {
const imageExtensions = new Set(['jpg', 'jpeg', 'png', 'gif', 'bmp'])
const docExtensions = new Set(['doc', 'docx', 'pdf', 'txt'])
for (const file of files) {
let isValid: boolean
switch (fileType) {
case 'image': {
const fileExtension = file.name.split('.').pop()?.toLowerCase()
isValid = fileExtension ? imageExtensions.has(fileExtension) : false
break
}
case 'video': {
isValid = file.file.type.startsWith('video/')
break
}
case 'doc': {
const docExtension = file.name.split('.').pop()?.toLowerCase()
isValid = docExtension ? docExtensions.has(docExtension) : false
break
}
case 'audio': {
isValid = file.file.type.startsWith('audio/')
break
}
default: {
isValid = false
}
}
if (!isValid) {
return false
}
}
return true
}