Make sure event objects are created for new pending events

This commit is contained in:
James Graham
2024-07-25 20:37:28 +01:00
parent c10c2677d1
commit b3146034cf
3 changed files with 6 additions and 3 deletions

View File

@@ -63,6 +63,8 @@ void MessageContentModel::initializeModel()
Quotient::connectUntil(m_room.get(), &NeoChatRoom::extraEventLoaded, this, [this](const QString &eventId) { Quotient::connectUntil(m_room.get(), &NeoChatRoom::extraEventLoaded, this, [this](const QString &eventId) {
if (m_room != nullptr) { if (m_room != nullptr) {
if (eventId == m_eventId) { if (eventId == m_eventId) {
m_event = loadEvent<RoomEvent>(m_room->getEvent(eventId)->fullJson());
Q_EMIT eventUpdated();
updateReplyModel(); updateReplyModel();
resetContent(); resetContent();
return true; return true;

View File

@@ -156,8 +156,9 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
refreshLastUserEvents(i); refreshLastUserEvents(i);
} }
}); });
connect(m_currentRoom, &Room::pendingEventAboutToAdd, this, [this] { connect(m_currentRoom, &Room::pendingEventAboutToAdd, this, [this](Quotient::RoomEvent *event) {
m_initialized = true; m_initialized = true;
createEventObjects(event);
beginInsertRows({}, 0, 0); beginInsertRows({}, 0, 0);
}); });
connect(m_currentRoom, &Room::pendingEventAdded, this, &MessageEventModel::endInsertRows); connect(m_currentRoom, &Room::pendingEventAdded, this, &MessageEventModel::endInsertRows);
@@ -465,6 +466,7 @@ QVariant MessageEventModel::data(const QModelIndex &idx, int role) const
} else { } else {
mId = evt.senderId(); mId = evt.senderId();
} }
return QVariant::fromValue<NeochatRoomMember *>(m_memberObjects.at(mId).get()); return QVariant::fromValue<NeochatRoomMember *>(m_memberObjects.at(mId).get());
} }

View File

@@ -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. // 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 // See - https://doc.qt.io/qt-5/qabstractitemmodel.html#beginRemoveRows
if (data(i, MessageEventModel::SpecialMarksRole) != EventStatus::Hidden && !itemData(i).empty()) { if (data(i, MessageEventModel::SpecialMarksRole) != EventStatus::Hidden && !itemData(i).empty()) {
return qvariant_cast<NeochatRoomMember *>(data(i, MessageEventModel::AuthorRole))->id() return data(i, MessageEventModel::AuthorRole) != data(index, MessageEventModel::AuthorRole)
!= qvariant_cast<NeochatRoomMember *>(data(index, MessageEventModel::AuthorRole))->id()
|| data(i, MessageEventModel::DelegateTypeRole) == DelegateType::State || data(i, MessageEventModel::DelegateTypeRole) == DelegateType::State
|| data(i, MessageEventModel::TimeRole).toDateTime().msecsTo(data(index, MessageEventModel::TimeRole).toDateTime()) > 600000 || data(i, MessageEventModel::TimeRole).toDateTime().msecsTo(data(index, MessageEventModel::TimeRole).toDateTime()) > 600000
|| data(i, MessageEventModel::TimeRole).toDateTime().toLocalTime().date().day() || data(i, MessageEventModel::TimeRole).toDateTime().toLocalTime().date().day()