aboutsummaryrefslogtreecommitdiff
path: root/source/client/track_handle.ts
diff options
context:
space:
mode:
authormetamuffin <metamuffin@yandex.com>2022-01-23 16:34:57 +0100
committermetamuffin <metamuffin@yandex.com>2022-01-23 16:34:57 +0100
commit37fdcd78ba9b6bfc4db1369485129e160bb5f67a (patch)
treec976269a40ab32f00433320ad2cd909ac92e0d67 /source/client/track_handle.ts
parentbe747eff67244a01cc6faab3bfb1b8731d146335 (diff)
downloadkeks-meet-37fdcd78ba9b6bfc4db1369485129e160bb5f67a.tar
keks-meet-37fdcd78ba9b6bfc4db1369485129e160bb5f67a.tar.bz2
keks-meet-37fdcd78ba9b6bfc4db1369485129e160bb5f67a.tar.zst
refactor part 2
Diffstat (limited to 'source/client/track_handle.ts')
-rw-r--r--source/client/track_handle.ts17
1 files changed, 14 insertions, 3 deletions
diff --git a/source/client/track_handle.ts b/source/client/track_handle.ts
index bf3858f..dd96936 100644
--- a/source/client/track_handle.ts
+++ b/source/client/track_handle.ts
@@ -1,14 +1,25 @@
export class TrackHandle extends EventTarget {
- constructor(public track: MediaStreamTrack) {
+ constructor(
+ public track: MediaStreamTrack,
+ public local = false
+ ) {
super()
track.onended = () => this.dispatchEvent(new CustomEvent("ended"))
- track.onmute = () => this.dispatchEvent(new CustomEvent("mute"))
- track.onunmute = () => this.dispatchEvent(new CustomEvent("unmute"))
+ // TODO research how onmute and onunmute behave
+ track.onmute = () => this.dispatchEvent(new CustomEvent("ended")) // onmute seems to be called when the remote ends the track
+ track.onunmute = () => this.dispatchEvent(new CustomEvent("started"))
+
+ this.addEventListener("ended", () => {
+ // drop all references to help gc
+ track.onunmute = track.onmute = track.onended = null
+ })
}
get kind() { return this.track.kind }
get label() { return this.track.label }
get muted() { return this.track.muted }
get id() { return this.track.id }
+
+ end() { this.track.stop(); this.dispatchEvent(new CustomEvent("ended")) }
}