Make sure event objects are created for new pending events
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
@@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
Reference in New Issue
Block a user