fixup jumps from notifs sometimes not working
This commit is contained in:
parent
da7f2dcf4e
commit
301bcd94f2
1 changed files with 18 additions and 9 deletions
|
|
@ -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(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue