@@ -94,28 +94,34 @@ const LocalFileBrowser = ({ superState, dispatcher }) => {
9494 } ;
9595
9696 const newFeature = async ( ) => {
97- const dirHandle = await window . showDirectoryPicker ( ) ;
98- let state = [ ] ;
99- // eslint-disable-next-line no-restricted-syntax
100- for await ( const [ key , value ] of dirHandle . entries ( ) ) {
101- if ( value . kind === 'file' ) {
102- const fileData = await value . getFile ( ) ;
103- state = state . concat ( [ {
104- key : `${ dirHandle . name } /${ key } ` ,
105- modified : fileData . lastModified ,
106- size : fileData . size ,
107- fileObj : fileData ,
108- fileHandle : value ,
109- } ] ) ;
110- } else if ( value . kind === 'directory' ) {
111- const res = await handleFileInDirs ( dirHandle . name , value ) ;
112- state = state . concat ( res ) ;
97+ try {
98+ const dirHandle = await window . showDirectoryPicker ( ) ;
99+ let state = [ ] ;
100+ // eslint-disable-next-line no-restricted-syntax
101+ for await ( const [ key , value ] of dirHandle . entries ( ) ) {
102+ if ( value . kind === 'file' ) {
103+ const fileData = await value . getFile ( ) ;
104+ state = state . concat ( [ {
105+ key : `${ dirHandle . name } /${ key } ` ,
106+ modified : fileData . lastModified ,
107+ size : fileData . size ,
108+ fileObj : fileData ,
109+ fileHandle : value ,
110+ } ] ) ;
111+ } else if ( value . kind === 'directory' ) {
112+ const res = await handleFileInDirs ( dirHandle . name , value ) ;
113+ state = state . concat ( res ) ;
114+ }
115+ }
116+ setFileState ( [ ] ) ;
117+ setFileState ( state ) ;
118+ dispatcher ( { type : T . SET_DIR_NAME , payload : state [ 0 ] . key . split ( '/' ) [ 0 ] } ) ;
119+ dispatcher ( { type : T . SET_FILE_STATE , payload : state } ) ;
120+ } catch ( error ) {
121+ if ( error . name !== 'AbortError' ) {
122+ toast . info ( 'Switch to Edge/Chrome!' ) ;
113123 }
114124 }
115- setFileState ( [ ] ) ;
116- setFileState ( state ) ;
117- dispatcher ( { type : T . SET_DIR_NAME , payload : state [ 0 ] . key . split ( '/' ) [ 0 ] } ) ;
118- dispatcher ( { type : T . SET_FILE_STATE , payload : state } ) ;
119125 } ;
120126
121127 const newFeatureFile = async ( ) => {
@@ -161,6 +167,10 @@ const LocalFileBrowser = ({ superState, dispatcher }) => {
161167 onChange = { ( e ) => {
162168 const { files } = e . target ;
163169 if ( files && files . length > 0 ) {
170+ if ( ! files [ 0 ] . webkitRelativePath ) {
171+ toast . info ( 'Switch to Edge/Chrome!' ) ;
172+ return ;
173+ }
164174 tempFilesRef . current = files ;
165175 const folderName = files [ 0 ] . webkitRelativePath . split ( '/' ) [ 0 ] ;
166176 setPendingFolderName ( folderName ) ;
0 commit comments