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
Showing only changes of commit 91d573e487 - Show all commits

fix constant refreshing

Henry Hiles 2026-05-17 21:32:49 -04:00
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -23,8 +23,10 @@ import "package:nexus/widgets/chat_page/event_text.dart";
import "package:nexus/widgets/chat_page/member_list.dart";
import "package:nexus/widgets/chat_page/room_appbar.dart";
import "package:nexus/widgets/chat_page/wrappers/message_wrapper.dart";
import "package:nexus/widgets/error_dialog.dart";
import "package:nexus/widgets/form_text_input.dart";
import "package:nexus/main.dart";
import "package:nexus/widgets/loading.dart";
import "package:super_sliver_list/super_sliver_list.dart";
class RoomChat extends HookConsumerWidget {
@ -287,6 +289,30 @@ class RoomChat extends HookConsumerWidget {
].toIList();
}
SuperListView messageView(IList<Event> events) => SuperListView.builder(
controller: scrollController,
listController: listController.value,
itemCount: events.length,
itemBuilder: (_, index) => MessageWrapper(
events[index],
EventText(
events[index],
onTapReply: () => listController.value.animateToItem(
index: index,
scrollController: scrollController,
alignment: 0.5,
duration: (_) => Duration(milliseconds: 250),
curve: (_) => Curves.easeInOut,
),
getEventOptions: getEventOptions,
),
// TODO: Reimplement grouping
isGrouped: false,
// TODO: Reimplement flashing
isFlashing: false,
),
);
return Scaffold(
appBar: RoomAppbar(
isDesktop: isDesktop,
@ -302,35 +328,15 @@ class RoomChat extends HookConsumerWidget {
child: Stack(
children: [
Positioned.fill(
child: ref
.watch(controllerProvider)
.betterWhen(
data: (events) => SuperListView.builder(
controller: scrollController,
listController: listController.value,
itemCount: events.length,
itemBuilder: (_, index) => MessageWrapper(
events[index],
EventText(
events[index],
onTapReply: () =>
listController.value.animateToItem(
index: index,
scrollController: scrollController,
alignment: 0.5,
duration: (_) =>
Duration(milliseconds: 250),
curve: (_) => Curves.easeInOut,
),
getEventOptions: getEventOptions,
),
// TODO: Reimplement grouping
isGrouped: false,
// TODO: Reimplement flashing
isFlashing: false,
),
),
child: switch (ref.watch(controllerProvider)) {
AsyncData(:final value) => messageView(value),
AsyncLoading(:final value) =>
value == null ? Loading() : messageView(value),
AsyncError(:final error, :final stackTrace) => ErrorDialog(
error,
stackTrace,
),
},
),
ChatBox(
node: composerNode,