aboutsummaryrefslogtreecommitdiff
path: root/client-web/source/resource
diff options
context:
space:
mode:
Diffstat (limited to 'client-web/source/resource')
-rw-r--r--client-web/source/resource/mod.ts2
-rw-r--r--client-web/source/resource/track.ts18
2 files changed, 18 insertions, 2 deletions
diff --git a/client-web/source/resource/mod.ts b/client-web/source/resource/mod.ts
index 3091a45..9583604 100644
--- a/client-web/source/resource/mod.ts
+++ b/client-web/source/resource/mod.ts
@@ -42,7 +42,7 @@ export abstract class Resource {
}
request_stop() {
if (!(this.user instanceof RemoteUser)) return
- this.user.send_to({ request: { id: this.info.id } })
+ this.user.send_to({ request_stop: { id: this.info.id } })
}
update_el() {
diff --git a/client-web/source/resource/track.ts b/client-web/source/resource/track.ts
index f58e020..bc26acc 100644
--- a/client-web/source/resource/track.ts
+++ b/client-web/source/resource/track.ts
@@ -24,12 +24,28 @@ export class TrackResource extends Resource {
this.update_el()
}
+ destroy() {
+ this.track?.end()
+ super.destroy()
+ }
+
create_preview(): HTMLElement {
- return ebutton("Enable", { onclick: () => this.request() })
+ return ebutton("Enable", {
+ onclick: (e) => {
+ (e as HTMLButtonElement).disabled = true;
+ this.request()
+ }
+ })
}
create_element() {
if (!this.track) { return this.create_preview() }
const el = document.createElement("div")
+ el.append(ebutton("Disable", {
+ onclick: (e) => {
+ (e as HTMLButtonElement).disabled = true;
+ this.request_stop()
+ }
+ }))
const is_video = this.track.kind == "video"
const media_el = is_video ? document.createElement("video") : document.createElement("audio")