diff --git a/src/libneochat/models/userlistmodel.cpp b/src/libneochat/models/userlistmodel.cpp index bbe94cb71..17e17051b 100644 --- a/src/libneochat/models/userlistmodel.cpp +++ b/src/libneochat/models/userlistmodel.cpp @@ -146,9 +146,13 @@ bool UserListModel::event(QEvent *event) void UserListModel::memberJoined(const Quotient::RoomMember &member) { - auto pos = findUserPos(member); - beginInsertRows(QModelIndex(), pos, pos); - m_members.insert(pos, member.id()); + if (m_members.contains(member.id())) { + return; + } + + const int row = m_members.size(); + beginInsertRows(QModelIndex(), row, row); + m_members.append(member.id()); endInsertRows(); } @@ -168,8 +172,6 @@ void UserListModel::refreshMember(const Quotient::RoomMember &member, const QLis { auto pos = findUserPos(member); if (pos != m_members.size()) { - // The update will have changed the state event so we need to insert the updated member object. - m_members.insert(pos, member.id()); Q_EMIT dataChanged(index(pos), index(pos), roles); } else { qWarning() << "Trying to access a room member not in the user list";