Do heavy things less often on room change event

This commit is contained in:
Andreas Gattringer
2024-07-13 12:14:59 +02:00
parent 709711c3ca
commit b211f46e3e
2 changed files with 11 additions and 5 deletions

View File

@@ -215,10 +215,13 @@ void MessageEventModel::setRoom(NeoChatRoom *room)
} }
refreshEventRoles(eventId, {Qt::DisplayRole}); refreshEventRoles(eventId, {Qt::DisplayRole});
}); });
connect(m_currentRoom, &Room::changed, this, [this]() { connect(m_currentRoom, &Room::changed, this, [this](Room::Changes changes) {
for (auto it = m_currentRoom->messageEvents().rbegin(); it != m_currentRoom->messageEvents().rend(); ++it) { if (changes & (Room::Change::PartiallyReadStats | Room::Change::UnreadStats | Room::Change::Other | Room::Change::Members)) {
auto event = it->event(); // this is slow
refreshEventRoles(event->id(), {ReadMarkersRole, ReadMarkersStringRole, ExcessReadMarkersRole}); for (auto it = m_currentRoom->messageEvents().rbegin(); it != m_currentRoom->messageEvents().rend(); ++it) {
auto event = it->event();
refreshEventRoles(event->id(), {ReadMarkersRole, ReadMarkersStringRole, ExcessReadMarkersRole});
}
} }
}); });
connect(m_currentRoom->connection(), &Connection::ignoredUsersListChanged, this, [this] { connect(m_currentRoom->connection(), &Connection::ignoredUsersListChanged, this, [this] {

View File

@@ -47,7 +47,10 @@ void UserListModel::setRoom(NeoChatRoom *room)
connect(m_currentRoom, &Room::memberAvatarUpdated, this, [this](RoomMember member) { connect(m_currentRoom, &Room::memberAvatarUpdated, this, [this](RoomMember member) {
refreshMember(member, {AvatarRole}); refreshMember(member, {AvatarRole});
}); });
connect(m_currentRoom, &Room::changed, this, &UserListModel::refreshAllMembers); connect(m_currentRoom, &Room::memberListChanged, this, [this]() {
// this is slow
UserListModel::refreshAllMembers();
});
connect(m_currentRoom->connection(), &Connection::loggedOut, this, [this]() { connect(m_currentRoom->connection(), &Connection::loggedOut, this, [this]() {
setRoom(nullptr); setRoom(nullptr);
}); });