fixup jumps from notifs sometimes not working

This commit is contained in:
Henry Hiles 2026-09-29 20:47:20 -04:00
commit 301bcd94f2
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs

View file

@ -68,6 +68,12 @@ final class const RoomChat({
final roomId = this.roomId!; final roomId = this.roomId!;
final jumpRowId = ref.watch(
JumpRequestController.provider.select(
(request) => request?.roomId == roomId ? request?.rowId : null,
),
);
final controllerProvider = RoomChatController.provider(( final controllerProvider = RoomChatController.provider((
roomId: roomId, roomId: roomId,
contextualEvent: contextualEvent.value, contextualEvent: contextualEvent.value,
@ -115,23 +121,26 @@ final class const RoomChat({
}); });
} }
ref.listen(JumpRequestController.provider, (_, request) { useEffect(() {
if (request == null || request.roomId != roomId) return; if (jumpRowId == null) return null;
void tryJump() { void check() {
if (!context.mounted) return; if (!context.mounted) return;
if (ref.read(JumpRequestController.provider) != request) return;
if (scroll.scrollController.hasClients) { if (scroll.scrollController.hasClients) {
ref.read(JumpRequestController.provider.notifier).consume(); jumpToEvent(jumpRowId);
jumpToEvent(request.rowId); Future.microtask(
() => ref.read(JumpRequestController.provider.notifier).consume(),
);
} else { } else {
WidgetsBinding.instance.addPostFrameCallback((_) => tryJump()); WidgetsBinding.instance.addPostFrameCallback((_) => check());
} }
} }
WidgetsBinding.instance.addPostFrameCallback((_) => tryJump()); check();
});
return null;
}, [jumpRowId]);
IList<PopupMenuEntry> getEventOptions(Event event) => IList<PopupMenuEntry> getEventOptions(Event event) =>
event.buildEventOptions( event.buildEventOptions(