From 4e99a3325318c902cd78ea9f760f46d79acde5c0 Mon Sep 17 00:00:00 2001 From: metamuffin Date: Mon, 3 Oct 2022 11:28:16 +0200 Subject: riesencommit (part 1) --- client-web/source/resource/file.ts | 44 +++++++++++++++++++++++++++++++------- 1 file changed, 36 insertions(+), 8 deletions(-) (limited to 'client-web/source/resource/file.ts') 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 { + 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 -- cgit v1.2.3-70-g09d2