change algorithm for deciding when to load more messages

This commit is contained in:
Henry Hiles 2026-05-21 14:19:51 -04:00
commit a28592d11e
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -6,6 +6,7 @@ import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:fluttertagger/fluttertagger.dart";
import "package:nexus/controllers/client_controller.dart";
import "package:nexus/controllers/rooms_controller.dart";
import "package:nexus/models/content/message.dart";
import "package:nexus/models/content/reaction.dart";
import "package:nexus/models/event.dart";
import "package:nexus/models/requests/get_related_events_request.dart";
@ -37,8 +38,14 @@ class RoomChatController extends AsyncNotifier<IList<Event>> {
await ref.read(RoomsController.provider.notifier).addState(roomId, state);
}
// While there are under 30 messages, try up to load more messages until there's no more or we have 20 messages.
if (room.hasMore && room.timeline.length < 30) {
// While there are under 5 messages or under 20 events, try to load
// more messages until there's no more or the conditions are met.
if (room.hasMore &&
(room.events.values
.where((event) => event.content is MessageContent)
.length <
5 ||
room.timeline.length < 20)) {
loadOlder();
}