setRemoteVideoEnabled method
- bool enabled
Sets inbound video in this OngoingCall as enabled or not.
No-op if isRemoteVideoEnabled is already enabled.
Implementation
Future<void> setRemoteVideoEnabled(bool enabled) async {
Log.debug('setRemoteVideoEnabled($enabled)', '$runtimeType');
if (_videoGuard.isLocked) {
return;
}
await _videoGuard.protect(() async {
final Map<CallMemberId, bool> previous = Map.fromEntries(
members.values
.where((e) => e.id != _me)
.map((e) => MapEntry(e.id, e.hasVideo.value)),
);
try {
for (var e in members.values.where((e) => e.id != _me)) {
e.hasVideo.value = enabled;
}
if (enabled) {
await _room?.enableRemoteVideo();
} else {
await _room?.disableRemoteVideo();
}
isRemoteVideoEnabled.value = enabled;
} on MediaStateTransitionException catch (_) {
// No-op.
} catch (e) {
for (var e in previous.entries) {
members[e.key]?.hasVideo.value = e.value;
}
rethrow;
}
});
}