Watch
1
0
Fork
You've already forked nexus
0
forked from Nexus/nexus

fix localContent being outdated for edits

This commit is contained in:
Henry Hiles 2026-10-02 11:32:10 -04:00
commit 36917bbea5
Signed by: Henry-Hiles
SSH key fingerprint: SHA256:VKQUdS31Q90KvX7EkKMHMBpUspcmItAh86a+v7PGiIs
2 changed files with 43 additions and 26 deletions

View file

@ -40,13 +40,29 @@ class const Composer(
final shouldMention = useState(true); final shouldMention = useState(true);
final query = useState(""); final query = useState("");
final relatedEvent = this.relatedEvent == null final relatedEvent = this.relatedEvent == null
? null
: ref.watch(
RoomsController.provider.select((rooms) {
final event = rooms[roomId]?.events[this.relatedEvent!];
if (event == null) return null;
final edited = event.lastEditRowId == 0
? null ? null
: ref.watch( : ref.watch(
RoomsController.provider.select( RoomsController.provider.select(
(rooms) => rooms[roomId]?.events[this.relatedEvent!], (value) => value[roomId]?.events[event.lastEditRowId],
), ),
); );
return edited == null
? event
: event.copyWith(
content: edited.content,
localContent: edited.localContent,
);
}),
);
if (relationType == .edit && controller.value.text.isEmpty) { if (relationType == .edit && controller.value.text.isEmpty) {
controller.value.text = controller.value.text =
relatedEvent?.localContent?.editSource ?? relatedEvent?.localContent?.editSource ??

View file

@ -48,33 +48,34 @@ class const EventRenderer(
final focusNode = useFocusNode(); final focusNode = useFocusNode();
useListenable(focusNode); useListenable(focusNode);
final (initialEvent, previousEvent) = ref.watch( final (event, previousEvent) = ref.watch(
RoomsController.provider.select( RoomsController.provider.select((rooms) {
(value) => ( final event = rooms[roomId]?.events[eventRowId];
value[roomId]?.events[eventRowId], if (event == null) return (null, null);
previousEventRowId == null
? null
: value[roomId]?.events[previousEventRowId!],
),
),
);
if (initialEvent == null) return SizedBox.shrink(); final edited = event.lastEditRowId == 0
final edited = initialEvent.lastEditRowId == 0
? null ? null
: ref.watch( : ref.watch(
RoomsController.provider.select( RoomsController.provider.select(
(value) => value[roomId]?.events[initialEvent.lastEditRowId], (value) => value[roomId]?.events[event.lastEditRowId],
), ),
); );
final event = edited == null return (
? initialEvent edited == null
: initialEvent.copyWith( ? event
: event.copyWith(
content: edited.content, content: edited.content,
localContent: edited.localContent, localContent: edited.localContent,
),
previousEventRowId == null
? null
: rooms[roomId]?.events[previousEventRowId!],
); );
}),
);
if (event == null) return SizedBox.shrink();
final isGrouped = final isGrouped =
previousEvent?.content is MessageContent && previousEvent?.content is MessageContent &&