diff --git a/lib/src/events.dart b/lib/src/events.dart index f222de1..1d89d6c 100644 --- a/lib/src/events.dart +++ b/lib/src/events.dart @@ -72,8 +72,8 @@ class ActiveSpeakersChangedEvent with RoomEvent { /// joined. It will not fire for tracks that are already published. /// Emitted by [Room] and [RemoteParticipant]. class TrackPublishedEvent with RoomEvent, ParticipantEvent { - final RemoteParticipant participant; - final RemoteTrackPublication publication; + final Participant participant; + final TrackPublication publication; const TrackPublishedEvent({ required this.participant, required this.publication, diff --git a/lib/src/participant/local_participant.dart b/lib/src/participant/local_participant.dart index 13a5449..50783ae 100644 --- a/lib/src/participant/local_participant.dart +++ b/lib/src/participant/local_participant.dart @@ -76,7 +76,12 @@ class LocalParticipant extends Participant { final pub = LocalTrackPublication(trackInfo, track, this); addTrackPublication(pub); - notifyListeners(); + + [events, roomEvents].emit(TrackPublishedEvent( + participant: this, + publication: pub, + )); + return pub; } @@ -149,7 +154,11 @@ class LocalParticipant extends Participant { final pub = LocalTrackPublication(trackInfo, track, this); addTrackPublication(pub); - notifyListeners(); + + [events, roomEvents].emit(TrackPublishedEvent( + participant: this, + publication: pub, + )); return pub; } diff --git a/lib/src/participant/participant.dart b/lib/src/participant/participant.dart index c7d2acc..deb19cc 100644 --- a/lib/src/participant/participant.dart +++ b/lib/src/participant/participant.dart @@ -141,9 +141,9 @@ abstract class Participant extends DisposableChangeNotifier } // Must implement - Future unpublishTrack(String trackSid, {bool notify = false}); + Future unpublishTrack(String trackSid, {bool notify = true}); - Future unpublishAllTracks({bool notify = false}) async { + Future unpublishAllTracks({bool notify = true}) async { final trackSids = trackPublications.keys.toSet(); for (final trackid in trackSids) { await unpublishTrack(trackid, notify: notify); diff --git a/lib/src/participant/remote_participant.dart b/lib/src/participant/remote_participant.dart index 8ba718e..1185607 100644 --- a/lib/src/participant/remote_participant.dart +++ b/lib/src/participant/remote_participant.dart @@ -73,7 +73,7 @@ class RemoteParticipant extends Participant { reason: TrackSubscribeFailReason.notTrackMetadataFound, ), ); - pub = event.publication; + pub = event.publication as RemoteTrackPublication; logger.fine('addSubscribedMediaTrack() did receive pub'); } @@ -147,7 +147,7 @@ class RemoteParticipant extends Participant { final removeSids = trackPublications.keys.where((e) => !validSids.contains(e)).toSet(); for (final sid in removeSids) { - await unpublishTrack(sid, notify: true); + await unpublishTrack(sid); } }