re-send tracks permissions after reconnected. (#128)
This commit is contained in:
@@ -218,6 +218,8 @@ class Room extends DisposableChangeNotifier with EventsEmittable<RoomEvent> {
|
|||||||
void _setUpEngineListeners() => _engineListener
|
void _setUpEngineListeners() => _engineListener
|
||||||
..on<EngineConnectionStateUpdatedEvent>((event) async {
|
..on<EngineConnectionStateUpdatedEvent>((event) async {
|
||||||
if (event.didReconnect) {
|
if (event.didReconnect) {
|
||||||
|
// re-send tracks permissions
|
||||||
|
localParticipant?.sendTrackSubscriptionPermissions();
|
||||||
events.emit(const RoomReconnectedEvent());
|
events.emit(const RoomReconnectedEvent());
|
||||||
await _handlePostReconnect(false);
|
await _handlePostReconnect(false);
|
||||||
} else if (event.newState == ConnectionState.reconnecting) {
|
} else if (event.newState == ConnectionState.reconnecting) {
|
||||||
|
|||||||
@@ -322,6 +322,9 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool _allParticipantsAllowed = true;
|
||||||
|
List<ParticipantTrackPermission> _participantTrackPermissions = [];
|
||||||
|
|
||||||
/// Control who can subscribe to LocalParticipant's published tracks.
|
/// Control who can subscribe to LocalParticipant's published tracks.
|
||||||
///
|
///
|
||||||
/// By default, all participants can subscribe. This allows fine-grained control over
|
/// By default, all participants can subscribe. This allows fine-grained control over
|
||||||
@@ -342,11 +345,22 @@ class LocalParticipant extends Participant<LocalTrackPublication> {
|
|||||||
void setTrackSubscriptionPermissions({
|
void setTrackSubscriptionPermissions({
|
||||||
required bool allParticipantsAllowed,
|
required bool allParticipantsAllowed,
|
||||||
List<ParticipantTrackPermission> trackPermissions = const [],
|
List<ParticipantTrackPermission> trackPermissions = const [],
|
||||||
}) =>
|
}) {
|
||||||
room.engine.signalClient.sendUpdateSubscriptionPermissions(
|
_allParticipantsAllowed = allParticipantsAllowed;
|
||||||
allParticipants: allParticipantsAllowed,
|
_participantTrackPermissions = trackPermissions;
|
||||||
trackPermissions: trackPermissions.map((e) => e.toPBType()).toList(),
|
sendTrackSubscriptionPermissions();
|
||||||
);
|
}
|
||||||
|
|
||||||
|
void sendTrackSubscriptionPermissions() {
|
||||||
|
if (room.engine.connectionState != ConnectionState.connected) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
room.engine.signalClient.sendUpdateSubscriptionPermissions(
|
||||||
|
allParticipants: _allParticipantsAllowed,
|
||||||
|
trackPermissions:
|
||||||
|
_participantTrackPermissions.map((e) => e.toPBType()).toList(),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
@internal
|
@internal
|
||||||
Iterable<lk_rtc.TrackPublishedResponse> publishedTracksInfo() =>
|
Iterable<lk_rtc.TrackPublishedResponse> publishedTracksInfo() =>
|
||||||
|
|||||||
Reference in New Issue
Block a user