Remove flutter chat #26

Manually merged
Henry-Hiles merged 108 commits from remove-flutter-chat into main 2026-05-22 15:26:28 -04:00
2 changed files with 21 additions and 10 deletions
Showing only changes of commit 228ff1051f - Show all commits

Add load more button

Henry Hiles 2026-05-21 16:28:47 -04:00
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -6,7 +6,6 @@ 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";
@ -38,14 +37,9 @@ class RoomChatController extends AsyncNotifier<IList<Event>> {
await ref.read(RoomsController.provider.notifier).addState(roomId, state);
}
// 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)) {
// While there are under 20 events, try to load more
// until there's no more or the conditions are met.
if (room.hasMore && room.timeline.length < 20) {
loadOlder();
}

View file

@ -319,6 +319,8 @@ class RoomChat extends HookConsumerWidget {
].toIList();
}
final controllerData = ref.watch(controllerProvider);
return Scaffold(
appBar: RoomAppbar(
roomId: roomId,
@ -337,7 +339,7 @@ class RoomChat extends HookConsumerWidget {
Positioned.fill(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12),
child: switch (ref.watch(controllerProvider)) {
child: switch (controllerData) {
AsyncData(:final value) ||
AsyncLoading(:final value?) => CustomScrollView(
reverse: true,
@ -346,6 +348,7 @@ class RoomChat extends HookConsumerWidget {
SliverPadding(
padding: EdgeInsetsGeometry.only(bottom: 64),
),
SuperSliverList.builder(
listController: listController.value,
itemCount: value.length,
@ -391,6 +394,20 @@ class RoomChat extends HookConsumerWidget {
);
},
),
SliverToBoxAdapter(
child: Padding(
padding: EdgeInsets.only(bottom: 36),
child: Center(
child: controllerData is AsyncLoading
? Loading()
: ElevatedButton(
onPressed: notifier.loadOlder,
child: Text("Load More"),
),
),
),
),
],
),
AsyncLoading() => Loading(),