diff --git a/lib/controllers/room_chat_controller.dart b/lib/controllers/room_chat_controller.dart index 2b6810b..a750e53 100644 --- a/lib/controllers/room_chat_controller.dart +++ b/lib/controllers/room_chat_controller.dart @@ -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> { 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(); }