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) {
if (m_room != nullptr) {
if (eventId == m_eventId) {
m_event = loadEvent<RoomEvent>(m_room->getEvent(eventId)->fullJson());
Q_EMIT eventUpdated();
updateReplyModel();
resetContent();
return true;

View File

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