From 08d9575ec582d1d542cc9939585d1f2257b53b82 Mon Sep 17 00:00:00 2001 From: Hiroshi Horie <548776+hiroshihorie@users.noreply.github.com> Date: Fri, 3 Dec 2021 00:08:30 +0700 Subject: [PATCH] better type for Participant.trackPublications --- lib/src/participant/local_participant.dart | 8 ++++++-- lib/src/participant/participant.dart | 2 +- lib/src/participant/remote_participant.dart | 12 ++++++------ 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/lib/src/participant/local_participant.dart b/lib/src/participant/local_participant.dart index 36d0901..4400295 100644 --- a/lib/src/participant/local_participant.dart +++ b/lib/src/participant/local_participant.dart @@ -26,6 +26,9 @@ class LocalParticipant extends Participant { @internal final AudioPublishOptions? defaultAudioPublishOptions; + @override + covariant Map trackPublications = {}; + LocalParticipant({ required this.engine, required lk_models.ParticipantInfo info, @@ -173,10 +176,11 @@ class LocalParticipant extends Participant { Future unpublishTrack(String trackSid, {bool notify = true}) async { logger.finer('Unpublish track sid: $trackSid, notify: $notify'); final pub = trackPublications.remove(trackSid); - if (pub is! LocalTrackPublication) { - await pub?.dispose(); + if (pub == null) { + logger.warning('Publication not found $trackSid'); return; } + await pub.dispose(); final track = pub.track; if (track != null) { diff --git a/lib/src/participant/participant.dart b/lib/src/participant/participant.dart index 917c840..8b3fb74 100644 --- a/lib/src/participant/participant.dart +++ b/lib/src/participant/participant.dart @@ -25,7 +25,7 @@ import 'remote_participant.dart'; abstract class Participant extends DisposableChangeNotifier with EventsEmittable { /// map of track sid => published track - final trackPublications = {}; + abstract final Map trackPublications; /// audio level between 0-1, 1 being the loudest double audioLevel = 0; diff --git a/lib/src/participant/remote_participant.dart b/lib/src/participant/remote_participant.dart index 4bb416c..9003859 100644 --- a/lib/src/participant/remote_participant.dart +++ b/lib/src/participant/remote_participant.dart @@ -21,6 +21,9 @@ class RemoteParticipant extends Participant { final RTCEngine _engine; RTCEngine get engine => _engine; + @override + covariant Map trackPublications = {}; + @override List get subscribedTracks => super.subscribedTracks.cast().toList(); @@ -178,14 +181,11 @@ class RemoteParticipant extends Participant { Future unpublishTrack(String trackSid, {bool notify = true}) async { logger.finer('Unpublish track sid: $trackSid, notify: $notify'); final pub = trackPublications.remove(trackSid); - - if (pub is! RemoteTrackPublication) { - // no publication exists for trackSid - // or publication is not RemoteTrackPublication - - await pub?.dispose(); + if (pub == null) { + logger.warning('Publication not found $trackSid'); return; } + await pub.dispose(); final track = pub.track; // if has track