@@ -31,6 +31,14 @@ import { ALL_FILES_LIMIT_KEY } from './models';
3131
3232const isDirectoryEntry = ( entry : FileSystemEntry ) : entry is FileSystemDirectoryEntry => entry . isDirectory ;
3333const isFileEntry = ( entry : FileSystemEntry ) : entry is FileSystemFileEntry => entry . isFile ;
34+ export const getTransferItemDirectoryEntry = (
35+ transferItems : DataTransferItemList ,
36+ index : number
37+ ) : FileSystemDirectoryEntry | undefined => {
38+ const entry = transferItems ?. [ index ] ?. webkitGetAsEntry ( ) ;
39+ if ( entry && isDirectoryEntry ( entry ) ) return entry ;
40+ return undefined ;
41+ } ;
3442
3543interface Props {
3644 acceptedFormats ?: string ; // comma separated list of allowed extensions i.e. '.png, .jpg, .jpeg'
@@ -173,7 +181,7 @@ export class FileAttachmentContainer extends React.PureComponent<Props, State> {
173181 const invalidNames = new Set < string > ( ) ;
174182
175183 Array . from ( fileList ) . forEach ( ( file , index ) => {
176- if ( transferItems && transferItems [ index ] . webkitGetAsEntry ( ) . isDirectory ) {
184+ if ( getTransferItemDirectoryEntry ( transferItems , index ) ) {
177185 if ( ! allowDirectories ) {
178186 invalidDirectories . push ( file . name ) ;
179187 invalidNames . add ( file . name ) ;
@@ -312,7 +320,7 @@ export class FileAttachmentContainer extends React.PureComponent<Props, State> {
312320 newFiles [ file . name ] = file ;
313321 haveValidFiles = true ;
314322
315- if ( transferItems && transferItems [ index ] . webkitGetAsEntry ( ) . isDirectory ) {
323+ if ( getTransferItemDirectoryEntry ( transferItems , index ) ) {
316324 hasDirectory = true ;
317325 }
318326 }
@@ -325,8 +333,8 @@ export class FileAttachmentContainer extends React.PureComponent<Props, State> {
325333 this . dirCbCount = 0 ;
326334 this . fileCbCount = 0 ;
327335 Array . from ( fileList ) . forEach ( ( file , index ) => {
328- const entry = transferItems [ index ] . webkitGetAsEntry ( ) ;
329- if ( isDirectoryEntry ( entry ) ) {
336+ const entry = getTransferItemDirectoryEntry ( transferItems , index ) ;
337+ if ( entry ) {
330338 delete files [ file . name ] ;
331339 this . getFilesFromDirectory ( files , entry , this , ( ) => {
332340 this . _handleFiles ( files ) ;
0 commit comments