Fetch state before rendering room
This commit is contained in:
parent
f4eea1b882
commit
dfc2a9e137
1 changed files with 31 additions and 31 deletions
|
|
@ -28,6 +28,37 @@ class RoomChatController extends AsyncNotifier<ChatController> {
|
||||||
final room = ref.read(RoomsController.provider)[roomId];
|
final room = ref.read(RoomsController.provider)[roomId];
|
||||||
if (room == null) return InMemoryChatController();
|
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(
|
final messages = await ref.watch(
|
||||||
MessagesController.provider(
|
MessagesController.provider(
|
||||||
MessagesConfig(
|
MessagesConfig(
|
||||||
|
|
@ -103,37 +134,6 @@ class RoomChatController extends AsyncNotifier<ChatController> {
|
||||||
if (messages.length < 20) await loadOlder(controller);
|
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;
|
return controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue