aboutsummaryrefslogtreecommitdiff
path: root/client-web
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2022-10-07 23:19:22 +0200
committermetamuffin <metamuffin@disroot.org>2022-10-07 23:19:22 +0200
commit0b75a0609e65a4d09e12d9f8466d6ece52869a94 (patch)
treef03a96dee6e3b01b545349cd646fd9a7e420e769 /client-web
parent4f026d9fdd8e50014ac349b2cb0ea72162308ead (diff)
downloadkeks-meet-0b75a0609e65a4d09e12d9f8466d6ece52869a94.tar
keks-meet-0b75a0609e65a4d09e12d9f8466d6ece52869a94.tar.bz2
keks-meet-0b75a0609e65a4d09e12d9f8466d6ece52869a94.tar.zst
logging for data channel
Diffstat (limited to 'client-web')
-rw-r--r--client-web/source/logger.ts1
-rw-r--r--client-web/source/resource/file.ts23
-rw-r--r--client-web/source/resource/mod.ts74
3 files changed, 17 insertions, 81 deletions
diff --git a/client-web/source/logger.ts b/client-web/source/logger.ts
index 6287c81..351cb2e 100644
--- a/client-web/source/logger.ts
+++ b/client-web/source/logger.ts
@@ -17,6 +17,7 @@ const log_scope_color = {
media: "#4af5ff",
rnnoise: "#4aff7e",
usermodel: "#a6ff4a",
+ dc: "#4af5ff",
}
export type LogScope = keyof typeof log_scope_color
diff --git a/client-web/source/resource/file.ts b/client-web/source/resource/file.ts
index d76961d..6cf3ff6 100644
--- a/client-web/source/resource/file.ts
+++ b/client-web/source/resource/file.ts
@@ -1,4 +1,12 @@
+/*
+ This file is part of keks-meet (https://codeberg.org/metamuffin/keks-meet)
+ which is licensed under the GNU Affero General Public License (version 3); see /COPYING.
+ Copyright (C) 2022 metamuffin <metamuffin@disroot.org>
+*/
+/// <reference lib="dom" />
+
import { ebutton, ediv, espan, sleep } from "../helper.ts";
+import { log } from "../logger.ts";
import { LocalResource, ResourceHandlerDecl } from "./mod.ts";
export const resource_file: ResourceHandlerDecl = {
@@ -28,13 +36,13 @@ export const resource_file: ResourceHandlerDecl = {
this.el.appendChild(display.el)
channel.onopen = _ev => {
- console.log(`${user.display_name}: channel open`);
+ log("dc", `${user.display_name}: channel open`);
}
channel.onerror = _ev => {
- console.log(`${user.display_name}: channel error`);
+ log("dc", `${user.display_name}: channel error`);
}
channel.onclose = _ev => {
- console.log(`${user.display_name}: channel closed`);
+ log("dc", `${user.display_name}: channel closed`);
const a = document.createElement("a")
a.href = URL.createObjectURL(new Blob([buffer], { type: "text/plain" }))
a.download = info.label ?? "file"
@@ -99,12 +107,13 @@ function file_res_inner(file: File): LocalResource {
display.status = `Draining buffers… (buffer: ${channel.bufferedAmount})`
await sleep(10)
}
+ display.status = "Waiting for the channel to close…"
return channel.close()
}
const feed = async () => {
const { value: chunk, done } = await reader.read()
- if (!chunk) console.warn("no chunk");
if (done) return await finish()
+ if (!chunk) console.warn("no chunk");
position += chunk.length
channel.send(chunk)
display.status = `${position} / ${file.size} (buffer: ${channel.bufferedAmount})`
@@ -119,17 +128,17 @@ function file_res_inner(file: File): LocalResource {
channel.onbufferedamountlow = () => feed_until_full()
channel.onopen = _ev => {
display.status = "Buffering…"
- console.log(`${user.display_name}: channel open`);
+ log("dc", `${user.display_name}: channel open`);
feed_until_full()
}
channel.onerror = _ev => {
- console.log(`${user.display_name}: channel error`);
+ log("dc", `${user.display_name}: channel error`);
}
channel.onclosing = _ev => {
display.status = "Channel closing…"
}
channel.onclose = _ev => {
- console.log(`${user.display_name}: channel closed`);
+ log("dc", `${user.display_name}: channel closed`);
transfers_el.removeChild(display.el)
}
return channel
diff --git a/client-web/source/resource/mod.ts b/client-web/source/resource/mod.ts
index a213d87..c6e51f5 100644
--- a/client-web/source/resource/mod.ts
+++ b/client-web/source/resource/mod.ts
@@ -11,80 +11,6 @@ import { RemoteUser } from "../user/remote.ts"
import { resource_file } from "./file.ts";
import { resource_track } from "./track.ts";
-// export abstract class Resource extends EventTarget {
-// abstract transport_method: TransportMethod
-// local: boolean
-// el: HTMLElement = ediv({ class: ["channel"] })
-// inner_el?: HTMLElement
-
-// constructor(
-// public user: User,
-// public info: ProvideInfo,
-// ) {
-// super()
-// this.local = this.user instanceof LocalUser
-// const button = document.createElement("button")
-// button.onclick = () => {
-// this.state == "enabled" ? this.request_stop() : this.request()
-// }
-// this.addEventListener("statechange", () => {
-// if (this.local) button.textContent = "End", button.disabled = false
-// else if (this.state == "enabled") button.textContent = "Disable", button.disabled = false
-// else if (this.state == "disabled") button.textContent = `Enable ${this.info.kind}`, button.disabled = false
-// else button.textContent = "Working…", button.disabled = true;
-// })
-// this.dispatchEvent(new CustomEvent("statechange"))
-// this.el.append(button)
-// }
-
-// static create(user: User, info: ProvideInfo): Resource {
-// }
-
-// private _state: ChannelState = "disabled"
-// get state() { return this._state }
-// set state(value: ChannelState) {
-// const old_value = this._state
-// this._state = value
-// if (value != old_value) this.dispatchEvent(new CustomEvent("statechange"))
-// }
-
-// private _channel?: TrackHandle | RTCDataChannel
-// get channel() { return this._channel }
-// set channel(value: TrackHandle | RTCDataChannel | undefined) {
-// const handle_end = () => {
-// this.channel = undefined
-// this.state = "disabled"
-// this.inner_el?.remove()
-// if (this.user instanceof LocalUser) this.destroy()
-// }
-// this._channel?.removeEventListener("ended", handle_end)
-// this._channel = value
-// if (value) this.el.append(this.inner_el = this.on_channel(value))
-// if (value) this.state = "enabled"
-// else this.state = "disabled"
-// this._channel?.addEventListener("ended", handle_end)
-// }
-
-// abstract on_channel(channel: TrackHandle | RTCDataChannel): HTMLElement
-// abstract on_request(): void;
-
-// destroy() { this.dispatchEvent(new CustomEvent("destroy")) }
-
-// request() {
-// if (!(this.user instanceof RemoteUser)) return
-// this.state = "await_enable"
-// this.user.send_to({ request: { id: this.info.id } })
-// }
-// request_stop() {
-// if (this.user instanceof RemoteUser) {
-// this.state = "await_disable"
-// this.user.send_to({ request_stop: { id: this.info.id } })
-// } else if (this.user instanceof LocalUser) {
-// this.destroy()
-// }
-// }
-// }
-
export type TransportMethod = "data-channel" | "track"
export type RemoteResourceState = "connected" | "disconnected" | "await_connect" | "await_disconnect"
export interface ResourceHandlerDecl {