diff options
author | metamuffin <metamuffin@yandex.com> | 2022-01-23 16:34:57 +0100 |
---|---|---|
committer | metamuffin <metamuffin@yandex.com> | 2022-01-23 16:34:57 +0100 |
commit | 37fdcd78ba9b6bfc4db1369485129e160bb5f67a (patch) | |
tree | c976269a40ab32f00433320ad2cd909ac92e0d67 /source/client/track_handle.ts | |
parent | be747eff67244a01cc6faab3bfb1b8731d146335 (diff) | |
download | keks-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.ts | 17 |
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")) } } |