Skip to content

Commit

Permalink
Unpublish based on track.sender (#325)
Browse files Browse the repository at this point in the history
* unpublish based on published mediastreamtrack id

* changeset

* Revert "unpublish based on published mediastreamtrack id"

This reverts commit 423fb62.

* remove track based on track.sender

* dont set sender to undefined on stop

* update changeset
  • Loading branch information
lukasIO committed Jul 13, 2022
1 parent 02c025f commit 56694b7
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 17 deletions.
5 changes: 5 additions & 0 deletions .changeset/warm-timers-tan.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'livekit-client': patch
---

unpublish track based on published track.sender
29 changes: 13 additions & 16 deletions src/room/participant/LocalParticipant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -686,8 +686,6 @@ export default class LocalParticipant extends Participant {
}

track = publication.track;

track.sender = undefined;
track.off(TrackEvent.Muted, this.onTrackMuted);
track.off(TrackEvent.Unmuted, this.onTrackUnmuted);
track.off(TrackEvent.Ended, this.handleTrackEnded);
Expand All @@ -701,22 +699,21 @@ export default class LocalParticipant extends Participant {
track.stop();
}

const { mediaStreamTrack } = track;

if (this.engine.publisher && this.engine.publisher.pc.connectionState !== 'closed') {
const senders = this.engine.publisher.pc.getSenders();
senders.forEach((sender) => {
if (sender.track === mediaStreamTrack) {
try {
this.engine.publisher?.pc.removeTrack(sender);
this.engine.negotiate();
} catch (e) {
log.warn('failed to remove track', { error: e, method: 'unpublishTrack' });
}
}
});
if (
this.engine.publisher &&
this.engine.publisher.pc.connectionState !== 'closed' &&
track.sender
) {
try {
this.engine.publisher.pc.removeTrack(track.sender);
this.engine.negotiate();
} catch (e) {
log.warn('failed to remove track', { error: e, method: 'unpublishTrack' });
}
}

track.sender = undefined;

// remove from our maps
this.tracks.delete(publication.trackSid);
switch (publication.kind) {
Expand Down
1 change: 0 additions & 1 deletion src/room/track/LocalVideoTrack.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,6 @@ export default class LocalVideoTrack extends LocalTrack {
}

stop() {
this.sender = undefined;
this._mediaStreamTrack.getConstraints();
this.simulcastCodecs.forEach((trackInfo) => {
trackInfo.mediaStreamTrack.stop();
Expand Down

0 comments on commit 56694b7

Please sign in to comment.