re-send tracks permissions after reconnected. (#128)

This commit is contained in:
CloudWebRTC
2022-06-14 17:12:37 +08:00
committed by GitHub
parent 47cd505a52
commit f93f3c063c
2 changed files with 21 additions and 5 deletions
+2
View File
@@ -218,6 +218,8 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
void _setUpEngineListeners() => _engineListener
..on<EngineConnectionStateUpdatedEvent>((event) async {
if (event.didReconnect) {
// re-send tracks permissions
localParticipant?.sendTrackSubscriptionPermissions();
events.emit(const RoomReconnectedEvent());
await _handlePostReconnect(false);
} else if (event.newState == ConnectionState.reconnecting) {
+19 -5
View File
@@ -322,6 +322,9 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
return null;
}
bool _allParticipantsAllowed = true;
List<ParticipantTrackPermission> _participantTrackPermissions = [];
/// Control who can subscribe to LocalParticipant's published tracks.
///
/// By default, all participants can subscribe. This allows fine-grained control over
@@ -342,11 +345,22 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
void setTrackSubscriptionPermissions({
required bool allParticipantsAllowed,
List<ParticipantTrackPermission> trackPermissions = const [],
}) =>
room.engine.signalClient.sendUpdateSubscriptionPermissions(
allParticipants: allParticipantsAllowed,
trackPermissions: trackPermissions.map((e) => e.toPBType()).toList(),
);
}) {
_allParticipantsAllowed = allParticipantsAllowed;
_participantTrackPermissions = trackPermissions;
sendTrackSubscriptionPermissions();
}
void sendTrackSubscriptionPermissions() {
if (room.engine.connectionState != ConnectionState.connected) {
return;
}
room.engine.signalClient.sendUpdateSubscriptionPermissions(
allParticipants: _allParticipantsAllowed,
trackPermissions:
_participantTrackPermissions.map((e) => e.toPBType()).toList(),
);
}
@internal
Iterable<lk_rtc.TrackPublishedResponse> publishedTracksInfo() =>