Connection quality (#27)

* update protos

* signal event

* implemented

* format

* implement example

* protocol 5

* icon size
This commit is contained in:
Hiroshi Horie
2021-11-06 17:36:47 +09:00
committed by GitHub
parent 721b04753a
commit d31daa5d8e
17 changed files with 388 additions and 11 deletions
+16
View File
@@ -8,6 +8,7 @@ import '../managers/event.dart';
import '../proto/livekit_models.pb.dart' as lk_models;
import '../support/disposable.dart';
import '../track/track_publication.dart';
import '../types.dart';
import 'remote_participant.dart';
/// Represents a Participant in the room, notifies changes via delegates as
@@ -43,6 +44,8 @@ abstract class Participant extends DisposableChangeNotifier
lk_models.ParticipantInfo? _participantInfo;
bool _isSpeaking = false;
ConnectionQuality _connectionQuality = ConnectionQuality.unknown;
// suppport for multiple event listeners
final EventsEmitter<RoomEvent> roomEvents;
@@ -66,6 +69,9 @@ abstract class Participant extends DisposableChangeNotifier
bool get hasVideo => videoTracks.isNotEmpty;
/// Connection quality of the participant
ConnectionQuality get connectionQuality => _connectionQuality;
/// tracks that are subscribed to
List<TrackPublication> get subscribedTracks =>
trackPublications.values.where((e) => e.subscribed).toList();
@@ -120,6 +126,16 @@ abstract class Participant extends DisposableChangeNotifier
}
}
@internal
void updateConnectionQuality(ConnectionQuality quality) {
if (_connectionQuality == quality) return;
_connectionQuality = quality;
[events, roomEvents].emit(ParticipantConnectionQualityUpdatedEvent(
participant: this,
connectionQuality: _connectionQuality,
));
}
/// for internal use
/// {@nodoc}
@internal