diff --git a/lib/controllers/power_level_controller.dart b/lib/controllers/power_level_controller.dart index b972acf..7c40a6d 100644 --- a/lib/controllers/power_level_controller.dart +++ b/lib/controllers/power_level_controller.dart @@ -42,51 +42,37 @@ class PowerLevelController extends Notifier { int powerLevelOf(String userId) => content.users[userId] ?? content.usersDefault; - //Creators get power level infinite, here marked with null + // room creators get power level infinite final userLevel = roomCreators?.contains(user) == true - ? null + ? double.infinity : powerLevelOf(user); return switch (config) { EventPowerLevelConfig(:final eventType) => - userLevel == null - ? true - : (userLevel >= - (content.events[eventType.type] ?? content.eventsDefault)), + userLevel >= (content.events[eventType.type] ?? content.eventsDefault), MembershipActionPowerLevelConfig(:final action, :final targetUser) => switch (action) { - .invite => userLevel == null ? true : (userLevel >= content.invite), + .invite => userLevel >= content.invite, .kick => - userLevel == null - ? true - : (userLevel >= content.kick && - userLevel > powerLevelOf(targetUser)), + userLevel >= content.kick && userLevel > powerLevelOf(targetUser), .ban => - userLevel == null - ? true - : (userLevel >= content.ban && - userLevel > powerLevelOf(targetUser)), + userLevel >= content.ban && userLevel > powerLevelOf(targetUser), - .unban => userLevel == null ? true : (userLevel >= content.ban), + .unban => userLevel >= content.ban, }, StatePowerLevelConfig(:final eventType) => - userLevel == null - ? true - : (userLevel >= - (content.events[eventType.type] ?? content.stateDefault)), + userLevel >= (content.events[eventType.type] ?? content.stateDefault), RedactionPowerLevelConfig(:final targetUser) => - userLevel == null - ? true - : (userLevel >= - (targetUser == user - ? (content.events[EventType.redaction.type] ?? - content.eventsDefault) - : content.redact)), + userLevel >= + (targetUser == user + ? (content.events[EventType.redaction.type] ?? + content.eventsDefault) + : content.redact), }; } diff --git a/lib/controllers/room_creators_controller.dart b/lib/controllers/room_creators_controller.dart index 1b947e2..7db72c2 100644 --- a/lib/controllers/room_creators_controller.dart +++ b/lib/controllers/room_creators_controller.dart @@ -4,16 +4,16 @@ import "package:nexus/models/content/content.dart"; import "package:nexus/models/content/create.dart"; import "package:nexus/models/room.dart"; -class RoomCreatorsController extends Notifier?> { +class RoomCreatorsController extends Notifier> { final Room room; RoomCreatorsController(this.room); @override - IList? build() { + IList build() { final createRowId = room.state[EventType.create.type]?[""]; final createEvent = createRowId == null ? null : room.events[createRowId]; - if (createEvent == null) return null; + if (createEvent == null) return .new(); final createEventContent = switch (createEvent.content) { CreateContent content => content, @@ -22,12 +22,12 @@ class RoomCreatorsController extends Notifier?> { return switch (createEventContent?.additionalCreatorIds) { IList creators => creators.add(createEvent.sender), - _ => [createEvent.sender].toIList(), + _ => .new([createEvent.sender]), }; } static final provider = - NotifierProvider.family?, Room>( + NotifierProvider.family, Room>( RoomCreatorsController.new, ); }