diff --git a/web/src/components/ContentInput.tsx b/web/src/components/ContentInput.tsx index a053e0b..3fe256c 100644 --- a/web/src/components/ContentInput.tsx +++ b/web/src/components/ContentInput.tsx @@ -2,6 +2,7 @@ import { memo, useEffect, useMemo, useRef, useState } from 'react'; import { useConsistCallback } from '../utils/useConsistCallback'; import { isEqual } from '../utils/isEqual'; import { createThumbnail } from '../utils/createThumbnail'; +import { getFilesFromDataTransferItem } from '../utils/fileEntry'; interface Props { text?: string; @@ -105,10 +106,13 @@ export const ContentInput = memo((props) => { e.preventDefault(); e.stopPropagation(); - const droppedFiles = Array.from(e.dataTransfer!.files); - if (droppedFiles.length) { - handleFilesChange((prev) => [...prev, ...droppedFiles]); - } + const promises = Array.from(e.dataTransfer?.items || [], getFilesFromDataTransferItem) + Promise.all(promises).then((files) => { + const droppedFiles = ([] as File[]).concat(...files); + if (droppedFiles.length) { + handleFilesChange((prev) => [...prev, ...droppedFiles]); + } + }); }; window.addEventListener('drop', handleDrop, true); @@ -184,7 +188,7 @@ export const ContentInput = memo((props) => { Add file - {files.map((file, index) => )} + {files.map((file, index) => )}