nexus/lib/controllers/members_controller.dart
2026-01-30 18:45:55 +01:00

27 lines
900 B
Dart

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<IList<Event>> {
final Room room;
MembersController(this.room);
@override
Future<IList<Event>> 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<MembersController, IList<Event>, Room>(
MembersController.new,
);
}