feat: allow enabling group calls in already created rooms

This commit is contained in:
Jayesh Nirve 2022-07-20 18:44:03 +05:30
parent 26a42bb948
commit 0aa5ef9eea
No known key found for this signature in database
GPG Key ID: F6D9E9BF14C7D103
1 changed files with 29 additions and 0 deletions

View File

@ -1645,6 +1645,35 @@ class Room {
/// The level required to ban a user.
bool get canBan => _hasPermissionFor('ban');
/// if returned value is not null `org.matrix.msc3401.call.member` is present
/// and group calls can be used
bool get groupCallsEnabled {
final powerLevelMap = getState(EventTypes.RoomPowerLevels)?.content;
final groupCallPowerLevel =
powerLevelMap?.tryGetMap('events')?['org.matrix.msc3401.call.member'];
return groupCallPowerLevel != null &&
groupCallPowerLevel >= powerLevelMap?['users_default'];
}
/// sets the `org.matrix.msc3401.call.member` power level to users default for
/// group calls, needs permissions to change power levels
Future<void> enableGroupCalls() async {
if (!canChangePowerLevel) return;
final currentPowerLevelsMap = getState(EventTypes.RoomPowerLevels)?.content;
if (currentPowerLevelsMap != null) {
final newPowerLevelMap = currentPowerLevelsMap;
newPowerLevelMap['events'].addAll({
'org.matrix.msc3401.call.member': currentPowerLevelsMap['users_default']
});
await client.setRoomStateWithKey(
id,
EventTypes.RoomPowerLevels,
'',
newPowerLevelMap,
);
}
}
/// The default level required to send message events. Can be overridden by the events key.
bool get canSendDefaultMessages =>
_hasPermissionFor('events_default') &&