Remove flutter chat #26
1 changed files with 25 additions and 18 deletions
Support for loading history and marking read
commit
c4255f340a
|
|
@ -7,6 +7,7 @@ import "package:nexus/controllers/account_data_controller.dart";
|
|||
import "package:nexus/controllers/client_controller.dart";
|
||||
import "package:nexus/controllers/client_state_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/room_chat_controller.dart";
|
||||
import "package:nexus/controllers/via_controller.dart";
|
||||
|
|
@ -45,13 +46,6 @@ class RoomChat extends HookConsumerWidget {
|
|||
|
||||
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 roomId = ref.watch(
|
||||
SelectedRoomController.provider.select((value) => value?.metadata?.id),
|
||||
|
|
@ -78,6 +72,21 @@ class RoomChat extends HookConsumerWidget {
|
|||
final controllerProvider = RoomChatController.provider(roomId);
|
||||
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(
|
||||
onKeyEvent: (_, event) {
|
||||
if (event is KeyDownEvent &&
|
||||
|
|
@ -269,9 +278,7 @@ class RoomChat extends HookConsumerWidget {
|
|||
),
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
ref
|
||||
.watch(ClientController.provider.notifier)
|
||||
.reportEvent(
|
||||
client.reportEvent(
|
||||
ReportRequest(
|
||||
roomId: roomId,
|
||||
eventId: event.eventId,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue