@@ -21,9 +21,12 @@ import iconUnarchive from "@ktibow/iconset-material-symbols/unarchive";
2121import iconArrowBack from "@ktibow/iconset-material-symbols/arrow-back" ;
2222
2323export const FSAPI_UNAVAILABLE =
24- ( ! window . showDirectoryPicker || ! window . showOpenFilePicker ) && ( ! ( DataTransferItem . prototype as any ) . getAsEntry && ! DataTransferItem . prototype . webkitGetAsEntry ) ;
24+ ( ! window . showDirectoryPicker || ! window . showOpenFilePicker ) &&
25+ ! ( DataTransferItem . prototype as any ) . getAsEntry &&
26+ ! DataTransferItem . prototype . webkitGetAsEntry ;
2527
26- export const PICKERS_UNAVAILABLE = ! window . showDirectoryPicker || ! window . showOpenFilePicker ;
28+ export const PICKERS_UNAVAILABLE =
29+ ! window . showDirectoryPicker || ! window . showOpenFilePicker ;
2730
2831export const rootFolder = await navigator . storage . getDirectory ( ) ;
2932
@@ -106,15 +109,15 @@ export async function copyFile(
106109}
107110
108111export async function copyFileForBadBrowsers (
109- file : FileSystemFileEntry ,
110- to : FileSystemDirectoryHandle
112+ file : FileSystemFileEntry ,
113+ to : FileSystemDirectoryHandle
111114) {
112- const data = await new Promise < File > ( ( resolve , reject ) => {
113- file . file ( resolve , reject ) ;
114- } ) ;
115- const handle = await to . getFileHandle ( file . name , { create : true } ) ;
116- const writable = await handle . createWritable ( ) ;
117- await data . stream ( ) . pipeTo ( writable ) ;
115+ const data = await new Promise < File > ( ( resolve , reject ) => {
116+ file . file ( resolve , reject ) ;
117+ } ) ;
118+ const handle = await to . getFileHandle ( file . name , { create : true } ) ;
119+ const writable = await handle . createWritable ( ) ;
120+ await data . stream ( ) . pipeTo ( writable ) ;
118121}
119122
120123export async function countFolder (
@@ -135,25 +138,25 @@ export async function countFolder(
135138}
136139
137140export async function countFolderForBadBrowsers (
138- folder : FileSystemDirectoryEntry
141+ folder : FileSystemDirectoryEntry
139142) : Promise < number > {
140- let count = 0 ;
141- async function countOne ( folder : FileSystemDirectoryEntry ) {
142- const reader = folder . createReader ( ) ;
143- const entries = await new Promise < FileSystemEntry [ ] > ( ( resolve , reject ) => {
144- reader . readEntries ( resolve , reject ) ;
145- } ) ;
146-
147- for ( const entry of entries ) {
148- if ( entry . isFile ) {
149- count ++ ;
150- } else {
151- await countOne ( entry as FileSystemDirectoryEntry ) ;
152- }
153- }
154- }
155- await countOne ( folder ) ;
156- return count ;
143+ let count = 0 ;
144+ async function countOne ( folder : FileSystemDirectoryEntry ) {
145+ const reader = folder . createReader ( ) ;
146+ const entries = await new Promise < FileSystemEntry [ ] > ( ( resolve , reject ) => {
147+ reader . readEntries ( resolve , reject ) ;
148+ } ) ;
149+
150+ for ( const entry of entries ) {
151+ if ( entry . isFile ) {
152+ count ++ ;
153+ } else {
154+ await countOne ( entry as FileSystemDirectoryEntry ) ;
155+ }
156+ }
157+ }
158+ await countOne ( folder ) ;
159+ return count ;
157160}
158161
159162export async function copyFolder (
@@ -180,35 +183,35 @@ export async function copyFolder(
180183}
181184
182185export async function copyFolderForBadBrowsers (
183- folder : FileSystemDirectoryEntry ,
184- to : FileSystemDirectoryHandle ,
185- callback ?: ( name : string ) => void
186+ folder : FileSystemDirectoryEntry ,
187+ to : FileSystemDirectoryHandle ,
188+ callback ?: ( name : string ) => void
186189) {
187- async function upload (
188- from : FileSystemDirectoryEntry ,
189- to : FileSystemDirectoryHandle
190- ) {
191- const reader = from . createReader ( ) ;
192- const entries = await new Promise < FileSystemEntry [ ] > ( ( resolve , reject ) => {
193- reader . readEntries ( resolve , reject ) ;
194- } ) ;
195-
196- for ( const entry of entries ) {
197- if ( entry . isFile ) {
198- const file = entry as FileSystemFileEntry ;
199- const fileHandle = await to . getFileHandle ( file . name , { create : true } ) ;
200- const writable = await fileHandle . createWritable ( ) ;
201- file . file ( ( f ) => f . stream ( ) . pipeTo ( writable ) ) ;
202- if ( callback ) callback ( file . name ) ;
203- } else {
204- const dir = entry as FileSystemDirectoryEntry ;
205- const newTo = await to . getDirectoryHandle ( dir . name , { create : true } ) ;
206- await upload ( dir , newTo ) ;
207- }
208- }
209- }
210- const newFolder = await to . getDirectoryHandle ( folder . name , { create : true } ) ;
211- await upload ( folder , newFolder ) ;
190+ async function upload (
191+ from : FileSystemDirectoryEntry ,
192+ to : FileSystemDirectoryHandle
193+ ) {
194+ const reader = from . createReader ( ) ;
195+ const entries = await new Promise < FileSystemEntry [ ] > ( ( resolve , reject ) => {
196+ reader . readEntries ( resolve , reject ) ;
197+ } ) ;
198+
199+ for ( const entry of entries ) {
200+ if ( entry . isFile ) {
201+ const file = entry as FileSystemFileEntry ;
202+ const fileHandle = await to . getFileHandle ( file . name , { create : true } ) ;
203+ const writable = await fileHandle . createWritable ( ) ;
204+ file . file ( ( f ) => f . stream ( ) . pipeTo ( writable ) ) ;
205+ if ( callback ) callback ( file . name ) ;
206+ } else {
207+ const dir = entry as FileSystemDirectoryEntry ;
208+ const newTo = await to . getDirectoryHandle ( dir . name , { create : true } ) ;
209+ await upload ( dir , newTo ) ;
210+ }
211+ }
212+ }
213+ const newFolder = await to . getDirectoryHandle ( folder . name , { create : true } ) ;
214+ await upload ( folder , newFolder ) ;
212215}
213216
214217export async function hasContent ( ) : Promise < boolean > {
@@ -556,10 +559,7 @@ export const OpfsExplorer: Component<
556559 } ;
557560
558561 const uploadDisabled = use ( this . uploading , ( x ) => x || FSAPI_UNAVAILABLE ) ;
559- const downloadDisabled = use (
560- this . downloading ,
561- ( x ) => x || FSAPI_UNAVAILABLE
562- ) ;
562+ const downloadDisabled = use ( this . downloading , ( x ) => x || FSAPI_UNAVAILABLE ) ;
563563
564564 return (
565565 < div >
0 commit comments