From 981ea053a607713d14489293ea268c31d9e58eec Mon Sep 17 00:00:00 2001 From: Arno Rehn Date: Sun, 28 Sep 2025 17:55:51 +0200 Subject: [PATCH] Pinned messages: Decrypt events before handling them --- src/libneochat/neochatroom.cpp | 3 +++ src/timeline/models/pinnedmessagemodel.cpp | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/libneochat/neochatroom.cpp b/src/libneochat/neochatroom.cpp index 6225c0694..1c83857a4 100644 --- a/src/libneochat/neochatroom.cpp +++ b/src/libneochat/neochatroom.cpp @@ -1180,6 +1180,9 @@ void NeoChatRoom::loadPinnedMessage() const QString &mostRecentEventId = events.last(); connection()->callApi(id(), mostRecentEventId).then([this](const auto &job) { auto event = fromJson>(job->jsonData()); + if (auto encEv = eventCast(event.get())) { + event = decryptMessage(*encEv); + } m_pinnedMessage = EventHandler::richBody(this, event.get()); Q_EMIT pinnedMessageChanged(); }); diff --git a/src/timeline/models/pinnedmessagemodel.cpp b/src/timeline/models/pinnedmessagemodel.cpp index 2c5c09a23..666bca35b 100644 --- a/src/timeline/models/pinnedmessagemodel.cpp +++ b/src/timeline/models/pinnedmessagemodel.cpp @@ -55,7 +55,11 @@ void PinnedMessageModel::fill() for (const auto &event : std::as_const(events)) { m_room->connection()->callApi(m_room->id(), event).then([this](const auto &job) { beginInsertRows({}, m_pinnedEvents.size(), m_pinnedEvents.size()); - m_pinnedEvents.push_back(std::move(fromJson>(job->jsonData()))); + auto ev = fromJson>(job->jsonData()); + if (auto encEv = eventCast(ev.get())) { + ev = room()->decryptMessage(*encEv); + } + m_pinnedEvents.push_back(std::move(ev)); Q_EMIT newEventAdded(m_pinnedEvents.back().get()); endInsertRows(); });