fix: Make chat permission settings null and type safe

This commit is contained in:
krille-chan 2024-04-07 10:34:37 +02:00
parent 02ceddf9e8
commit f6c6898fb6
No known key found for this signature in database

View file

@ -31,14 +31,14 @@ class ChatPermissionsSettingsView extends StatelessWidget {
if (room == null) {
return Center(child: Text(L10n.of(context)!.noRoomsFound));
}
final powerLevelsContent = Map<String, dynamic>.from(
room.getState(EventTypes.RoomPowerLevels)!.content,
final powerLevelsContent = Map<String, Object?>.from(
room.getState(EventTypes.RoomPowerLevels)?.content ?? {},
);
final powerLevels = Map<String, dynamic>.from(powerLevelsContent)
..removeWhere((k, v) => v is! int);
final eventsPowerLevels =
Map<String, dynamic>.from(powerLevelsContent['events'] ?? {})
..removeWhere((k, v) => v is! int);
final eventsPowerLevels = Map<String, int?>.from(
powerLevelsContent.tryGetMap<String, int?>('events') ?? {},
)..removeWhere((k, v) => v is! int);
return Column(
children: [
Column(
@ -67,9 +67,12 @@ class ChatPermissionsSettingsView extends StatelessWidget {
Builder(
builder: (context) {
const key = 'rooms';
final int value = powerLevelsContent
final value = powerLevelsContent
.containsKey('notifications')
? powerLevelsContent['notifications']['rooms'] ?? 0
? powerLevelsContent
.tryGetMap<String, Object?>('notifications')
?.tryGet<int>('rooms') ??
0
: 0;
return PermissionsListTile(
permissionKey: key,
@ -98,11 +101,11 @@ class ChatPermissionsSettingsView extends StatelessWidget {
PermissionsListTile(
permissionKey: entry.key,
category: 'events',
permission: entry.value,
permission: entry.value ?? 0,
onTap: () => controller.editPowerLevel(
context,
entry.key,
entry.value,
entry.value ?? 0,
category: 'events',
),
),