diff --git a/src/app/utils/dom.ts b/src/app/utils/dom.ts index f4c3f719..812786f4 100644 --- a/src/app/utils/dom.ts +++ b/src/app/utils/dom.ts @@ -43,6 +43,17 @@ export const canFitInScrollView = ( export type FilesOrFile = T extends true ? File[] : File; +export const getFilesFromFileList = (fileList: FileList): File[] => { + const files: File[] = []; + + for (let i = 0; i < fileList.length; i += 1) { + const file: File | undefined = fileList[i]; + if (file instanceof File) files.push(file); + } + + return files; +}; + export const selectFile = ( accept: string, multiple?: M @@ -58,7 +69,7 @@ export const selectFile = ( if (!fileList) { resolve(undefined); } else { - const files: File[] = [...fileList].filter((file) => file); + const files: File[] = getFilesFromFileList(fileList); resolve((multiple ? files : files[0]) as FilesOrFile); } input.removeEventListener('change', changeHandler); @@ -70,7 +81,7 @@ export const selectFile = ( export const getDataTransferFiles = (dataTransfer: DataTransfer): File[] | undefined => { const fileList = dataTransfer.files; - const files = [...fileList].filter((file) => file); + const files: File[] = getFilesFromFileList(fileList); if (files.length === 0) return undefined; return files; };