summary refs log tree commit diff
path: root/src/timeline/EventStore.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2022-02-27 05:02:54 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2022-02-27 06:43:45 +0100
commit9f5b647fb38d1f362c557d707274597189942c48 (patch)
treeedb20bf2fe9fa8e6050152016af12a6253af69b2 /src/timeline/EventStore.cpp
parentUpdate README.md to include Arch binary repo (#968) (diff)
downloadnheko-9f5b647fb38d1f362c557d707274597189942c48.tar.xz
Fix editing pending messages
Diffstat (limited to 'src/timeline/EventStore.cpp')
-rw-r--r--src/timeline/EventStore.cpp18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/timeline/EventStore.cpp b/src/timeline/EventStore.cpp

index 8e244f42..f7d15b61 100644 --- a/src/timeline/EventStore.cpp +++ b/src/timeline/EventStore.cpp
@@ -187,15 +187,13 @@ EventStore::EventStore(std::string room_id, QObject *) // FIXME (introduced by balsoft): this doesn't work for encrypted events, but // allegedly it's hard to fix so I'll leave my first contribution at that - for (const auto &related_event_id : cache::client()->relatedEvents(room_id_, txn_id)) { - if (cache::client()->getEvent(room_id_, related_event_id)) { - auto related_event = - cache::client()->getEvent(room_id_, related_event_id).value(); - auto relations = mtx::accessors::relations(related_event.data); + for (const auto &pending_event_id : cache::client()->pendingEvents(room_id_)) { + if (auto pending_event = cache::client()->getEvent(room_id_, pending_event_id)) { + auto relations = mtx::accessors::relations(pending_event->data); // Replace the blockquote in fallback reply auto related_text = std::get_if<mtx::events::RoomEvent<mtx::events::msg::Text>>( - &related_event.data); + &pending_event->data); if (related_text && relations.reply_to() == txn_id) { size_t index = related_text->content.formatted_body.find(txn_id); if (index != std::string::npos) { @@ -209,13 +207,13 @@ EventStore::EventStore(std::string room_id, QObject *) rel.event_id = event_id; } - mtx::accessors::set_relations(related_event.data, std::move(relations)); + mtx::accessors::set_relations(pending_event->data, std::move(relations)); - cache::client()->replaceEvent(room_id_, related_event_id, related_event); + cache::client()->replaceEvent(room_id_, pending_event_id, *pending_event); - auto idx = idToIndex(related_event_id); + auto idx = idToIndex(pending_event_id); - events_by_id_.remove({room_id_, related_event_id}); + events_by_id_.remove({room_id_, pending_event_id}); events_.remove({room_id_, toInternalIdx(*idx)}); } }