Fix subtle erroneous event casts
Sometimes, the previous code would static_cast an EncryptedEvent to a RoomMessageEvent. This was mostly unnoticed, since the types are similar enough.
This commit is contained in:
@@ -158,8 +158,9 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
|
|||||||
});
|
});
|
||||||
connect(m_currentRoom, &Room::aboutToAddHistoricalMessages, this, [this](RoomEventsRange events) {
|
connect(m_currentRoom, &Room::aboutToAddHistoricalMessages, this, [this](RoomEventsRange events) {
|
||||||
for (auto &event : events) {
|
for (auto &event : events) {
|
||||||
RoomMessageEvent *message = dynamic_cast<RoomMessageEvent *>(event.get());
|
if (const auto &roomMessageEvent = dynamic_cast<RoomMessageEvent *>(event.get())) {
|
||||||
createEventObjects(message);
|
createEventObjects(roomMessageEvent);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (rowCount() > 0) {
|
if (rowCount() > 0) {
|
||||||
rowBelowInserted = rowCount() - 1; // See #312
|
rowBelowInserted = rowCount() - 1; // See #312
|
||||||
@@ -228,7 +229,9 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
|
|||||||
}
|
}
|
||||||
const auto eventIt = m_currentRoom->findInTimeline(eventId);
|
const auto eventIt = m_currentRoom->findInTimeline(eventId);
|
||||||
if (eventIt != m_currentRoom->historyEdge()) {
|
if (eventIt != m_currentRoom->historyEdge()) {
|
||||||
createEventObjects(static_cast<const RoomMessageEvent *>(&**eventIt));
|
if (const auto &event = dynamic_cast<const RoomMessageEvent *>(&**eventIt)) {
|
||||||
|
createEventObjects(event);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
refreshEventRoles(eventId, {ReactionRole, ShowReactionsRole, Qt::DisplayRole});
|
refreshEventRoles(eventId, {ReactionRole, ShowReactionsRole, Qt::DisplayRole});
|
||||||
});
|
});
|
||||||
@@ -704,10 +707,6 @@ int MessageEventModel::eventIdToRow(const QString &eventID) const
|
|||||||
|
|
||||||
void MessageEventModel::createEventObjects(const Quotient::RoomMessageEvent *event)
|
void MessageEventModel::createEventObjects(const Quotient::RoomMessageEvent *event)
|
||||||
{
|
{
|
||||||
if (event == nullptr) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
auto eventId = event->id();
|
auto eventId = event->id();
|
||||||
|
|
||||||
EventHandler eventHandler;
|
EventHandler eventHandler;
|
||||||
|
|||||||
Reference in New Issue
Block a user