import "package:collection/collection.dart"; import "package:fast_immutable_collections/fast_immutable_collections.dart"; import "package:flutter_riverpod/flutter_riverpod.dart"; import "package:nexus/models/event.dart"; import "package:nexus/models/room.dart"; class MembersController extends AsyncNotifier> { final Room room; MembersController(this.room); @override Future> build() async => (room.state["m.room.member"]?.values ?? []) .map( (eventRowId) => room.events.firstWhereOrNull( (event) => event.rowId == eventRowId, ), ) .nonNulls .where((member) => member.content["membership"] == "join") .toIList(); static final provider = AsyncNotifierProvider.family .autoDispose, Room>( MembersController.new, ); }