Pinned messages: Decrypt events before handling them
This commit is contained in:
@@ -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();
|
||||
});
|
||||
|
||||
@@ -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();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user