+1
-1
gleam.toml
+1
-1
gleam.toml
+22
-2
src/file_system_ffi.mjs
+22
-2
src/file_system_ffi.mjs
···
8
8
}
9
9
}
10
10
11
-
export async function getFileHandle(directoryHandle, name) {
11
+
export function name(handle) {
12
+
return handle.name
13
+
}
14
+
15
+
export async function getDirectoryHandle(directoryHandle, name, create) {
12
16
try {
13
-
return new Ok(await directoryHandle.getFileHandle(name));
17
+
return new Ok(await directoryHandle.getDirectoryHandle(name, { create }));
18
+
} catch (error) {
19
+
return new Error(error.toString());
20
+
}
21
+
}
22
+
23
+
export async function getFileHandle(directoryHandle, name, create) {
24
+
try {
25
+
return new Ok(await directoryHandle.getFileHandle(name, { create }));
26
+
} catch (error) {
27
+
return new Error(error.toString());
28
+
}
29
+
}
30
+
31
+
export async function removeEntry(directoryHandle, name, recursive) {
32
+
try {
33
+
return new Ok(await directoryHandle.removeEntry(name, { recursive }));
14
34
} catch (error) {
15
35
return new Error(error.toString());
16
36
}
+28
-2
src/plinth/browser/file_system.gleam
+28
-2
src/plinth/browser/file_system.gleam
···
2
2
import gleam/javascript/promise.{type Promise}
3
3
import plinth/browser/file.{type File}
4
4
5
-
pub type DirectoryHandle
5
+
pub type Handle(a)
6
+
7
+
pub type D
8
+
9
+
pub type F
10
+
11
+
pub type DirectoryHandle =
12
+
Handle(D)
6
13
7
-
pub type FileHandle
14
+
pub type FileHandle =
15
+
Handle(F)
8
16
9
17
@external(javascript, "../../file_system_ffi.mjs", "showDirectoryPicker")
10
18
pub fn show_directory_picker() -> Promise(Result(DirectoryHandle, String))
11
19
20
+
@external(javascript, "../../file_system_ffi.mjs", "name")
21
+
pub fn name(handle: Handle(a)) -> String
22
+
23
+
@external(javascript, "../../file_system_ffi.mjs", "getDirectoryHandle")
24
+
pub fn get_directory_handle(
25
+
handle: DirectoryHandle,
26
+
name: String,
27
+
create: Bool,
28
+
) -> Promise(Result(DirectoryHandle, String))
29
+
12
30
@external(javascript, "../../file_system_ffi.mjs", "getFileHandle")
13
31
pub fn get_file_handle(
14
32
handle: DirectoryHandle,
15
33
name: String,
34
+
create: Bool,
16
35
) -> Promise(Result(FileHandle, String))
36
+
37
+
@external(javascript, "../../file_system_ffi.mjs", "removeEntry")
38
+
pub fn remove_entry(
39
+
handle: DirectoryHandle,
40
+
name: String,
41
+
create: Bool,
42
+
) -> Promise(Result(Nil, String))
17
43
18
44
@external(javascript, "../../file_system_ffi.mjs", "allEntries")
19
45
pub fn all_entries(