Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
F
frontend
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
vicotor
frontend
Commits
ba13aab9
Commit
ba13aab9
authored
Feb 03, 2023
by
tom
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
better types
parent
9201965e
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
11 additions
and
6 deletions
+11
-6
files.ts
ui/shared/forms/utils/files.ts
+11
-6
No files found.
ui/shared/forms/utils/files.ts
View file @
ba13aab9
...
@@ -3,15 +3,15 @@ export async function getAllFileEntries(dataTransferItemList: DataTransferItemLi
...
@@ -3,15 +3,15 @@ export async function getAllFileEntries(dataTransferItemList: DataTransferItemLi
const
fileEntries
:
Array
<
FileSystemFileEntry
>
=
[];
const
fileEntries
:
Array
<
FileSystemFileEntry
>
=
[];
// Use BFS to traverse entire directory/file structure
// Use BFS to traverse entire directory/file structure
const
queue
:
Array
<
FileSystem
Entry
|
FileSystemDirectoryEntry
|
null
>
=
[];
const
queue
:
Array
<
FileSystem
FileEntry
|
FileSystemDirectoryEntry
>
=
[];
// Unfortunately dataTransferItemList is not iterable i.e. no forEach
// Unfortunately dataTransferItemList is not iterable i.e. no forEach
for
(
let
i
=
0
;
i
<
dataTransferItemList
.
length
;
i
++
)
{
for
(
let
i
=
0
;
i
<
dataTransferItemList
.
length
;
i
++
)
{
// Note webkitGetAsEntry a non-standard feature and may change
// Note webkitGetAsEntry a non-standard feature and may change
// Usage is necessary for handling directories
// Usage is necessary for handling directories
// + typescript types are kinda wrong - https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry
// + typescript types are kinda wrong - https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem/webkitGetAsEntry
const
item
=
dataTransferItemList
[
i
].
webkitGetAsEntry
();
const
item
=
dataTransferItemList
[
i
].
webkitGetAsEntry
()
as
FileSystemFileEntry
|
FileSystemDirectoryEntry
|
null
;
queue
.
push
(
item
);
item
&&
queue
.
push
(
item
);
}
}
while
(
queue
.
length
>
0
)
{
while
(
queue
.
length
>
0
)
{
...
@@ -28,7 +28,7 @@ export async function getAllFileEntries(dataTransferItemList: DataTransferItemLi
...
@@ -28,7 +28,7 @@ export async function getAllFileEntries(dataTransferItemList: DataTransferItemLi
// Get all the entries (files or sub-directories) in a directory
// Get all the entries (files or sub-directories) in a directory
// by calling readEntries until it returns empty array
// by calling readEntries until it returns empty array
async
function
readAllDirectoryEntries
(
directoryReader
:
DirectoryReader
)
{
async
function
readAllDirectoryEntries
(
directoryReader
:
DirectoryReader
)
{
const
entries
:
Array
<
FileSystemEntry
>
=
[];
const
entries
:
Array
<
FileSystem
File
Entry
>
=
[];
let
readEntries
=
await
readEntriesPromise
(
directoryReader
);
let
readEntries
=
await
readEntriesPromise
(
directoryReader
);
while
(
readEntries
&&
readEntries
.
length
>
0
)
{
while
(
readEntries
&&
readEntries
.
length
>
0
)
{
...
@@ -41,10 +41,15 @@ async function readAllDirectoryEntries(directoryReader: DirectoryReader) {
...
@@ -41,10 +41,15 @@ async function readAllDirectoryEntries(directoryReader: DirectoryReader) {
// Wrap readEntries in a promise to make working with readEntries easier
// Wrap readEntries in a promise to make working with readEntries easier
// readEntries will return only some of the entries in a directory
// readEntries will return only some of the entries in a directory
// e.g. Chrome returns at most 100 entries at a time
// e.g. Chrome returns at most 100 entries at a time
async
function
readEntriesPromise
(
directoryReader
:
DirectoryReader
):
Promise
<
Array
<
FileSystemEntry
>
|
undefined
>
{
async
function
readEntriesPromise
(
directoryReader
:
DirectoryReader
):
Promise
<
Array
<
FileSystem
File
Entry
>
|
undefined
>
{
try
{
try
{
return
await
new
Promise
((
resolve
,
reject
)
=>
{
return
await
new
Promise
((
resolve
,
reject
)
=>
{
directoryReader
.
readEntries
(
resolve
,
reject
);
directoryReader
.
readEntries
(
(
fileEntry
)
=>
{
resolve
(
fileEntry
as
Array
<
FileSystemFileEntry
>
);
},
reject
,
);
});
});
}
catch
(
err
)
{}
}
catch
(
err
)
{}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment