Pinned messages: Decrypt events before handling them

This commit is contained in:
Arno Rehn
2025-09-28 17:55:51 +02:00
parent e41fd7d986
commit 981ea053a6
2 changed files with 8 additions and 1 deletions

View File

@@ -1180,6 +1180,9 @@ void NeoChatRoom::loadPinnedMessage()
const QString &mostRecentEventId = events.last();
connection()->callApi<GetOneRoomEventJob>(id(), mostRecentEventId).then([this](const auto &job) {
auto event = fromJson<event_ptr_tt<RoomEvent>>(job->jsonData());
if (auto encEv = eventCast<EncryptedEvent>(event.get())) {
event = decryptMessage(*encEv);
}
m_pinnedMessage = EventHandler::richBody(this, event.get());
Q_EMIT pinnedMessageChanged();
});

View File

@@ -55,7 +55,11 @@ void PinnedMessageModel::fill()
for (const auto &event : std::as_const(events)) {
m_room->connection()->callApi<GetOneRoomEventJob>(m_room->id(), event).then([this](const auto &job) {
beginInsertRows({}, m_pinnedEvents.size(), m_pinnedEvents.size());
m_pinnedEvents.push_back(std::move(fromJson<event_ptr_tt<RoomEvent>>(job->jsonData())));
auto ev = fromJson<event_ptr_tt<RoomEvent>>(job->jsonData());
if (auto encEv = eventCast<EncryptedEvent>(ev.get())) {
ev = room()->decryptMessage(*encEv);
}
m_pinnedEvents.push_back(std::move(ev));
Q_EMIT newEventAdded(m_pinnedEvents.back().get());
endInsertRows();
});