refactor: strengthen upload boundary types
This commit is contained in:
@@ -28,12 +28,22 @@ function readDirectoryEntries(reader: FileSystemDirectoryReader) {
|
||||
})
|
||||
}
|
||||
|
||||
function isFileEntry(entry: FileSystemEntry): entry is FileSystemFileEntry {
|
||||
return entry.isFile
|
||||
}
|
||||
|
||||
function isDirectoryEntry(entry: FileSystemEntry): entry is FileSystemDirectoryEntry {
|
||||
return entry.isDirectory
|
||||
}
|
||||
|
||||
async function collectEntryFiles(entry: FileSystemEntry): Promise<File[]> {
|
||||
if (entry.isFile) {
|
||||
return [await readDroppedFile(entry as FileSystemFileEntry)]
|
||||
if (isFileEntry(entry)) {
|
||||
return [await readDroppedFile(entry)]
|
||||
}
|
||||
|
||||
const reader = (entry as FileSystemDirectoryEntry).createReader()
|
||||
if (!isDirectoryEntry(entry)) return []
|
||||
|
||||
const reader = entry.createReader()
|
||||
const files: File[] = []
|
||||
|
||||
while (true) {
|
||||
@@ -109,7 +119,8 @@ export default function FolderDropzone({
|
||||
}
|
||||
|
||||
const handleDragLeave = (e: React.DragEvent<HTMLDivElement>) => {
|
||||
if (!e.currentTarget.contains(e.relatedTarget as Node | null)) {
|
||||
const relatedTarget = e.relatedTarget
|
||||
if (!(relatedTarget instanceof Node) || !e.currentTarget.contains(relatedTarget)) {
|
||||
setIsDragActive(false)
|
||||
}
|
||||
}
|
||||
@@ -127,7 +138,7 @@ export default function FolderDropzone({
|
||||
.map((item) => item.webkitGetAsEntry?.())
|
||||
.filter((entry): entry is FileSystemEntry => entry !== null)
|
||||
|
||||
const directoryEntries = rootEntries.filter((entry) => entry.isDirectory)
|
||||
const directoryEntries = rootEntries.filter(isDirectoryEntry)
|
||||
|
||||
if (directoryEntries.length > 0) {
|
||||
if (directoryEntries.length > 1) {
|
||||
@@ -135,7 +146,7 @@ export default function FolderDropzone({
|
||||
return
|
||||
}
|
||||
|
||||
const rootEntry = directoryEntries[0] as FileSystemDirectoryEntry
|
||||
const rootEntry = directoryEntries[0]
|
||||
const files = await collectEntryFiles(rootEntry)
|
||||
processFiles(files, rootEntry.name)
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user