diff --git a/lib/controllers/room_chat_controller.dart b/lib/controllers/room_chat_controller.dart index 6486306..ab04b44 100644 --- a/lib/controllers/room_chat_controller.dart +++ b/lib/controllers/room_chat_controller.dart @@ -28,6 +28,37 @@ class RoomChatController extends AsyncNotifier { final room = ref.read(RoomsController.provider)[roomId]; if (room == null) return InMemoryChatController(); + final state = await client.getRoomState( + GetRoomStateRequest( + roomId: roomId, + fetchMembers: room.metadata?.hasMemberList == false, + includeMembers: true, + ), + ); + + ref + .read(RoomsController.provider.notifier) + .update( + { + roomId: Room( + events: state, + state: state.fold( + const IMap.empty(), + (previousValue, stateEvent) => previousValue.add( + stateEvent.type, + (previousValue[stateEvent.type] ?? const IMap.empty()).addAll( + IMap({ + if (stateEvent.stateKey != null) + stateEvent.stateKey!: stateEvent.rowId, + }), + ), + ), + ), + ), + }.toIMap(), + const ISet.empty(), + ); + final messages = await ref.watch( MessagesController.provider( MessagesConfig( @@ -103,37 +134,6 @@ class RoomChatController extends AsyncNotifier { if (messages.length < 20) await loadOlder(controller); } - final state = await client.getRoomState( - GetRoomStateRequest( - roomId: roomId, - fetchMembers: room.metadata?.hasMemberList == false, - includeMembers: true, - ), - ); - - ref - .read(RoomsController.provider.notifier) - .update( - { - roomId: Room( - events: state, - state: state.fold( - const IMap.empty(), - (previousValue, stateEvent) => previousValue.add( - stateEvent.type, - (previousValue[stateEvent.type] ?? const IMap.empty()).addAll( - IMap({ - if (stateEvent.stateKey != null) - stateEvent.stateKey!: stateEvent.rowId, - }), - ), - ), - ), - ), - }.toIMap(), - const ISet.empty(), - ); - return controller; }