forked from Henry-Hiles/nexus
dont fetch members on load
This commit is contained in:
parent
edbc647a06
commit
8b056d8ed1
21 changed files with 206 additions and 137 deletions
|
|
@ -1,25 +1,32 @@
|
|||
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/membership.dart";
|
||||
import "package:nexus/models/room.dart";
|
||||
|
||||
class MembersController extends Notifier<IList<Event>> {
|
||||
class MembersController extends Notifier<IList<Membership>> {
|
||||
final Room room;
|
||||
MembersController(this.room);
|
||||
|
||||
@override
|
||||
IList<Event> build() => (room.state["m.room.member"]?.values ?? [])
|
||||
IList<Membership> build() => (room.state["m.room.member"]?.values ?? [])
|
||||
.map(
|
||||
(eventRowId) =>
|
||||
room.events.firstWhereOrNull((event) => event.rowId == eventRowId),
|
||||
)
|
||||
.nonNulls
|
||||
.where((member) => member.content["membership"] == "join")
|
||||
.map(
|
||||
(membership) => Membership(
|
||||
avatarUrl: Uri.tryParse(membership.content["avatar_url"] ?? ""),
|
||||
userId: membership.stateKey!,
|
||||
displayName: membership.content["displayname"] ?? membership.stateKey,
|
||||
),
|
||||
)
|
||||
.toIList();
|
||||
|
||||
static final provider = NotifierProvider.family
|
||||
.autoDispose<MembersController, IList<Event>, Room>(
|
||||
.autoDispose<MembersController, IList<Membership>, Room>(
|
||||
MembersController.new,
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue