make loadOlder properly guard

This commit is contained in:
Henry Hiles 2026-08-11 10:39:45 -04:00
commit 43d2e94d62
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
2 changed files with 38 additions and 31 deletions

View file

@ -75,12 +75,13 @@ class RoomChatController extends AsyncNotifier<IList<Event>?> {
);
Future<bool> loadOlder() async {
state = AsyncLoading();
final timelineKeys = ref
.read(RoomsController.provider.select((value) => value[roomId]))
?.timeline
.keys;
final response = await ref
.watch(ClientController.provider.notifier)
.read(ClientController.provider.notifier)
.paginate(
.new(
roomId: roomId,
@ -90,26 +91,30 @@ class RoomChatController extends AsyncNotifier<IList<Event>?> {
),
);
ref
.watch(RoomsController.provider.notifier)
.update(
IMap({
roomId: Room(
events: IMap.fromIterable(
response.events.addAll(response.relatedEvents),
keyMapper: (event) => event.rowId,
valueMapper: (event) => event,
if (response.events.isEmpty) {
state = .data(state.value);
} else {
ref
.read(RoomsController.provider.notifier)
.update(
IMap({
roomId: Room(
events: IMap.fromIterable(
response.events.addAll(response.relatedEvents),
keyMapper: (event) => event.rowId,
valueMapper: (event) => event,
),
hasMore: response.hasMore,
timeline: IMap.fromIterable(
response.events,
keyMapper: (event) => event.timelineRowId,
valueMapper: (event) => event.rowId,
),
),
hasMore: response.hasMore,
timeline: IMap.fromIterable(
response.events,
keyMapper: (event) => event.timelineRowId,
valueMapper: (event) => event.rowId,
),
),
}),
.new(),
);
}),
.new(),
);
}
return response.hasMore;
}