Compare commits

..
3 changed files with 15 additions and 8 deletions

View file

@ -129,6 +129,14 @@ final class ChatScroll({
} else if (position.extentBefore <= readThreshold) { } else if (position.extentBefore <= readThreshold) {
await markRead(); await markRead();
} }
if (controllerData.isLoading == false &&
position.extentBefore <= readThreshold &&
controllerData.value?.hasMoreForward == false &&
contextualEvent.value != null) {
anchorId.value = null;
contextualEvent.value = null;
}
} }
scrollController.addListener(checkPosition); scrollController.addListener(checkPosition);

View file

@ -25,7 +25,7 @@ class const ChatPage({super.key}) extends HookConsumerWidget {
body: initComplete body: initComplete
? Row( ? Row(
children: [ children: [
if (isDesktop) Sidebar(isDesktop: isDesktop), if (isDesktop) Sidebar(),
Expanded( Expanded(
child: Consumer( child: Consumer(
builder: (context, ref, _) { builder: (context, ref, _) {
@ -50,9 +50,7 @@ class const ChatPage({super.key}) extends HookConsumerWidget {
children: [Loading(), Text("Syncing...")], children: [Loading(), Text("Syncing...")],
), ),
), ),
drawer: isDesktop || !initComplete drawer: isDesktop || !initComplete ? null : Sidebar(),
? null
: Sidebar(isDesktop: isDesktop),
), ),
); );
}, },

View file

@ -16,8 +16,7 @@ import "package:nexus/widgets/room_menu.dart";
// Needed for navigation_rail_m3e (#65). // Needed for navigation_rail_m3e (#65).
import "package:flutter/material.dart" as old_mat; import "package:flutter/material.dart" as old_mat;
class const Sidebar({required final bool isDesktop, super.key}) class const Sidebar({super.key}) extends HookConsumerWidget {
extends HookConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final selectedSpaceProvider = KeyController.provider( final selectedSpaceProvider = KeyController.provider(
@ -193,7 +192,8 @@ class const Sidebar({required final bool isDesktop, super.key})
IconButton( IconButton(
tooltip: "Open notifications", tooltip: "Open notifications",
onPressed: () { onPressed: () {
if (!isDesktop) Navigator.of(context).pop(); if (Navigator.of(context).canPop())
Navigator.of(context).pop();
Navigator.of(context).push( Navigator.of(context).push(
MaterialPageRoute( MaterialPageRoute(
builder: (_) => NotificationsPage(), builder: (_) => NotificationsPage(),
@ -309,7 +309,8 @@ class const Sidebar({required final bool isDesktop, super.key})
selectedRoomIdNotifier.set( selectedRoomIdNotifier.set(
children[value].metadata?.id, // children[value].metadata?.id, //
); );
if (!isDesktop) Navigator.of(context).pop(); if (Navigator.of(context).canPop())
Navigator.of(context).pop();
}, },
), ),
), ),