38 lines
1013 B
TypeScript
38 lines
1013 B
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
|
|
}
|
|
default: {
|
|
isValid = false
|
|
}
|
|
}
|
|
|
|
if (!isValid) {
|
|
return false
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|