forked from Nexus/nexus
fix: timeline anchoring
This commit is contained in:
parent
1723a0691a
commit
e58673431e
1 changed files with 14 additions and 17 deletions
|
|
@ -126,12 +126,6 @@ class RoomChat extends HookConsumerWidget {
|
|||
});
|
||||
}
|
||||
|
||||
Future<void> loadOlder() async {
|
||||
if (controllerData case AsyncData(value: final _?)) {
|
||||
await notifier.loadOlder();
|
||||
}
|
||||
}
|
||||
|
||||
final composerNode = useFocusNode(
|
||||
onKeyEvent: (_, event) {
|
||||
if (event is KeyDownEvent && event.logicalKey == .escape) {
|
||||
|
|
@ -429,26 +423,29 @@ class RoomChat extends HookConsumerWidget {
|
|||
final historyLength = boundaryIndex + 1;
|
||||
final liveLength = value.length - historyLength;
|
||||
|
||||
int? eventIndexForKey(Key key) {
|
||||
if (key is! ValueKey<String>) return null;
|
||||
final index = value.indexWhere(
|
||||
(event) => event.eventId == key.value,
|
||||
);
|
||||
return index < 0 ? null : index;
|
||||
}
|
||||
|
||||
int? historyChildIndex(Key key) {
|
||||
if (key == const ValueKey("history-loader")) {
|
||||
return historyLength;
|
||||
}
|
||||
if (key is! ValueKey<String>) return null;
|
||||
final eventIndex = value.indexWhere(
|
||||
(event) => event.eventId == key.value,
|
||||
);
|
||||
return eventIndex < 0 ||
|
||||
final eventIndex = eventIndexForKey(key);
|
||||
return eventIndex == null ||
|
||||
eventIndex >= historyLength
|
||||
? null
|
||||
: historyLength - eventIndex - 1;
|
||||
}
|
||||
|
||||
int? liveChildIndex(Key key) {
|
||||
if (key is! ValueKey<String>) return null;
|
||||
final eventIndex = value.indexWhere(
|
||||
(event) => event.eventId == key.value,
|
||||
);
|
||||
return eventIndex < historyLength
|
||||
final eventIndex = eventIndexForKey(key);
|
||||
return eventIndex == null ||
|
||||
eventIndex < historyLength
|
||||
? null
|
||||
: eventIndex - historyLength;
|
||||
}
|
||||
|
|
@ -508,7 +505,7 @@ class RoomChat extends HookConsumerWidget {
|
|||
hasMore: hasMore,
|
||||
isLoading:
|
||||
controllerData is AsyncLoading,
|
||||
onLoad: loadOlder,
|
||||
onLoad: notifier.loadOlder,
|
||||
);
|
||||
}
|
||||
final event =
|
||||
|
|
|
|||
Loading…
Reference in a new issue