From b3146034cf9e5cd6eb2b2d9a42ab173b760dd704 Mon Sep 17 00:00:00 2001 From: James Graham Date: Thu, 25 Jul 2024 20:37:28 +0100 Subject: [PATCH] Make sure event objects are created for new pending events --- src/models/messagecontentmodel.cpp | 2 ++ src/models/messageeventmodel.cpp | 4 +++- src/models/messagefiltermodel.cpp | 3 +-- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/models/messagecontentmodel.cpp b/src/models/messagecontentmodel.cpp index 67a53d277..4b7c15ef1 100644 --- a/src/models/messagecontentmodel.cpp +++ b/src/models/messagecontentmodel.cpp @@ -63,6 +63,8 @@ void MessageContentModel::initializeModel() Quotient::connectUntil(m_room.get(), &NeoChatRoom::extraEventLoaded, this, [this](const QString &eventId) { if (m_room != nullptr) { if (eventId == m_eventId) { + m_event = loadEvent(m_room->getEvent(eventId)->fullJson()); + Q_EMIT eventUpdated(); updateReplyModel(); resetContent(); return true; diff --git a/src/models/messageeventmodel.cpp b/src/models/messageeventmodel.cpp index a5a714fc4..57fc0e9c5 100644 --- a/src/models/messageeventmodel.cpp +++ b/src/models/messageeventmodel.cpp @@ -156,8 +156,9 @@ void MessageEventModel::setRoom(NeoChatRoom *room) refreshLastUserEvents(i); } }); - connect(m_currentRoom, &Room::pendingEventAboutToAdd, this, [this] { + connect(m_currentRoom, &Room::pendingEventAboutToAdd, this, [this](Quotient::RoomEvent *event) { m_initialized = true; + createEventObjects(event); beginInsertRows({}, 0, 0); }); connect(m_currentRoom, &Room::pendingEventAdded, this, &MessageEventModel::endInsertRows); @@ -465,6 +466,7 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const } else { mId = evt.senderId(); } + return QVariant::fromValue(m_memberObjects.at(mId).get()); } diff --git a/src/models/messagefiltermodel.cpp b/src/models/messagefiltermodel.cpp index 2430b649b..6286ab922 100644 --- a/src/models/messagefiltermodel.cpp +++ b/src/models/messagefiltermodel.cpp @@ -122,8 +122,7 @@ bool MessageFilterModel::showAuthor(QModelIndex index) const // While the row is removed the subsequent row indexes are not changed so we need to skip over the removed index. // See - https://doc.qt.io/qt-5/qabstractitemmodel.html#beginRemoveRows if (data(i, MessageEventModel::SpecialMarksRole) != EventStatus::Hidden && !itemData(i).empty()) { - return qvariant_cast(data(i, MessageEventModel::AuthorRole))->id() - != qvariant_cast(data(index, MessageEventModel::AuthorRole))->id() + return data(i, MessageEventModel::AuthorRole) != data(index, MessageEventModel::AuthorRole) || data(i, MessageEventModel::DelegateTypeRole) == DelegateType::State || data(i, MessageEventModel::TimeRole).toDateTime().msecsTo(data(index, MessageEventModel::TimeRole).toDateTime()) > 600000 || data(i, MessageEventModel::TimeRole).toDateTime().toLocalTime().date().day()