diff --git a/lib/src/internal/events.dart b/lib/src/internal/events.dart index 6fb298c..2e0e624 100644 --- a/lib/src/internal/events.dart +++ b/lib/src/internal/events.dart @@ -74,6 +74,10 @@ class TrackMuteUpdatedEvent with TrackEvent, InternalEvent { required this.track, required this.muted, }); + + @override + String toString() => + 'TrackMuteUpdatedEvent(track: ${track}, muted: ${muted})'; } // diff --git a/lib/src/publication/local_track_publication.dart b/lib/src/publication/local_track_publication.dart index 741dab7..af77547 100644 --- a/lib/src/publication/local_track_publication.dart +++ b/lib/src/publication/local_track_publication.dart @@ -1,3 +1,4 @@ +import '../logger.dart'; import '../events.dart'; import '../extensions.dart'; import '../internal/events.dart'; @@ -33,6 +34,7 @@ class LocalTrackPublication extends TrackPublication { // listen for track muted events ..on((event) { // send signal to server + logger.fine('${this} sending mute signal ${sid}, ${event.muted}'); participant.room.engine.signalClient.sendMuteTrack(sid, event.muted); // emit events final newEvent = event.muted diff --git a/lib/src/track/local.dart b/lib/src/track/local.dart index 48c9084..679e5c5 100644 --- a/lib/src/track/local.dart +++ b/lib/src/track/local.dart @@ -32,27 +32,31 @@ abstract class LocalTrack extends Track { mediaStreamTrack, ); - // only local tracks can set muted - Future mute() async { + // Only local tracks can set muted. + // Returns true if muted, false if unchanged. + Future mute() async { logger.fine('LocalTrack.mute() muted: $muted'); - if (muted) return; + if (muted) return false; // already muted await disable(); if (!Platform.isWindows) { await stop(); } updateMuted(true); events.emit(TrackMuteUpdatedEvent(track: this, muted: muted)); + return true; } - Future unmute() async { + // Returns true if unmuted, false if unchanged. + Future unmute() async { logger.fine('LocalTrack.unmute() muted: $muted'); - if (!muted) return; + if (!muted) return false; // already un-muted if (!Platform.isWindows) { await restartTrack(); } await enable(); updateMuted(false); events.emit(TrackMuteUpdatedEvent(track: this, muted: muted)); + return true; } @override