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 c4255f340a - Show all commits

Support for loading history and marking read

Henry Hiles 2026-05-19 21:54:21 -04:00
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -7,6 +7,7 @@ import "package:nexus/controllers/account_data_controller.dart";
import "package:nexus/controllers/client_controller.dart"; import "package:nexus/controllers/client_controller.dart";
import "package:nexus/controllers/client_state_controller.dart"; import "package:nexus/controllers/client_state_controller.dart";
import "package:nexus/controllers/power_level_controller.dart"; import "package:nexus/controllers/power_level_controller.dart";
import "package:nexus/controllers/rooms_controller.dart";
import "package:nexus/controllers/selected_room_controller.dart"; import "package:nexus/controllers/selected_room_controller.dart";
import "package:nexus/controllers/room_chat_controller.dart"; import "package:nexus/controllers/room_chat_controller.dart";
import "package:nexus/controllers/via_controller.dart"; import "package:nexus/controllers/via_controller.dart";
@ -45,13 +46,6 @@ class RoomChat extends HookConsumerWidget {
final memberListOpened = useState<bool>(showMembersByDefault); final memberListOpened = useState<bool>(showMembersByDefault);
final listController = useRef(ListController());
final scrollController = useScrollController(
onAttach: (position) => position.addListener(() {
// TODO: Do things on scroll to top or bottom
}),
);
final userId = ref.watch(ClientStateController.provider)?.userId; final userId = ref.watch(ClientStateController.provider)?.userId;
final roomId = ref.watch( final roomId = ref.watch(
SelectedRoomController.provider.select((value) => value?.metadata?.id), SelectedRoomController.provider.select((value) => value?.metadata?.id),
@ -78,6 +72,21 @@ class RoomChat extends HookConsumerWidget {
final controllerProvider = RoomChatController.provider(roomId); final controllerProvider = RoomChatController.provider(roomId);
final notifier = ref.watch(controllerProvider.notifier); final notifier = ref.watch(controllerProvider.notifier);
final client = ref.watch(ClientController.provider.notifier);
final listController = useRef(ListController());
final scrollController = useScrollController();
scrollController.addListener(() async {
if (!scrollController.position.atEdge) return;
if (scrollController.position.pixels == 0) {
final room = ref.watch(RoomsController.provider)[roomId];
if (room != null) client.markRead(room);
} else {
await notifier.loadOlder();
}
});
final composerNode = useFocusNode( final composerNode = useFocusNode(
onKeyEvent: (_, event) { onKeyEvent: (_, event) {
if (event is KeyDownEvent && if (event is KeyDownEvent &&
@ -269,9 +278,7 @@ class RoomChat extends HookConsumerWidget {
), ),
TextButton( TextButton(
onPressed: () { onPressed: () {
ref client.reportEvent(
.watch(ClientController.provider.notifier)
.reportEvent(
ReportRequest( ReportRequest(
roomId: roomId, roomId: roomId,
eventId: event.eventId, eventId: event.eventId,