diff options
Diffstat (limited to 'client-web/source/resource/file.ts')
-rw-r--r-- | client-web/source/resource/file.ts | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/client-web/source/resource/file.ts b/client-web/source/resource/file.ts index 690c765..b6629bc 100644 --- a/client-web/source/resource/file.ts +++ b/client-web/source/resource/file.ts @@ -1,11 +1,39 @@ -import { TrackHandle } from "../track_handle.ts"; -import { Resource } from "./mod.ts"; - -export class FileResource extends Resource { - - on_track(_track: TrackHandle): HTMLElement { - throw new Error("Method not implemented."); - } +import { ediv } from "../helper.ts"; +import { LocalResource, ResourceHandlerDecl } from "./mod.ts"; +export const resource_file: ResourceHandlerDecl = { + kind: "file", + new_remote(info, _user, _enable) { + return { + info, + el: ediv(), + on_statechange(_s) { }, + on_enable(_track, _disable) { + return { + on_disable() { + } + } + } + } + } } + +export function create_file_res(): Promise<LocalResource> { + const picker = document.createElement("input") + picker.type = "file" + picker.click() + return new Promise((resolve, reject) => { + picker.addEventListener("change", () => { + if (!picker.files) return reject() + const f = picker.files.item(0) + if (!f) return reject() + resolve({ + info: { kind: "file", id: Math.random().toString(), label: f.name, size: f.size }, + destroy() { /* TODO */ }, + el: ediv(), + on_request(_user, _create_channel) { return _create_channel("TODO") } + }) + }) + }) +}
\ No newline at end of file |