diff --git a/autotests/roommodeltest.h b/autotests/roommodeltest.h --- a/autotests/roommodeltest.h +++ b/autotests/roommodeltest.h @@ -29,6 +29,21 @@ public: explicit RoomModelTest(QObject *parent = nullptr); ~RoomModelTest() = default; + +private Q_SLOTS: + void shouldHaveDefaultValues(); + void shouldReturnRowCount(); + void shouldFindRoom(); + void shouldAddRoom(); + void shouldUpdateRoom(); + void shouldUpdateRoomFromQJsonObject(); + void shouldUpdateSubcriptionActionRemoved(); + void shouldUpdateSubcriptionActionInserted(); + void shouldUpdateSubcriptionActionUpdated(); + void shouldClear(); + void shouldReset(); + void shouldReturnDataDefault(); + void shouldReturnData(); }; #endif // ROOMMODELTEST_H diff --git a/autotests/roommodeltest.cpp b/autotests/roommodeltest.cpp --- a/autotests/roommodeltest.cpp +++ b/autotests/roommodeltest.cpp @@ -18,16 +18,364 @@ Boston, MA 02110-1301, USA. */ +#include "room.h" +#include "roomwrapper.h" #include "roommodeltest.h" #include "roommodel.h" -#include "room.h" +#include "rocketchataccountsettings.h" + +#include +#include #include #include +#include +#include #include QTEST_MAIN(RoomModelTest) RoomModelTest::RoomModelTest(QObject *parent) : QObject(parent) { } + +void RoomModelTest::shouldHaveDefaultValues() +{ + RoomModel sampleModel; + QCOMPARE(sampleModel.rowCount(), 0); +} + +void RoomModelTest::shouldReturnRowCount() +{ + RoomModel sampleModel; + + QCOMPARE(sampleModel.rowCount(), 0); + + sampleModel.addRoom(QStringLiteral("myRoomID1"), QStringLiteral("myRoom1")); + QCOMPARE(sampleModel.rowCount(), 1); + + sampleModel.addRoom(QStringLiteral("myRoomID1"), QStringLiteral("bla bla")); + QCOMPARE(sampleModel.rowCount(), 1); + + sampleModel.addRoom(QStringLiteral("myRoomID2"), QStringLiteral("myRoom2"), true); + QCOMPARE(sampleModel.rowCount(), 2); +} + +void RoomModelTest::shouldFindRoom() +{ + RoomModel sampleModel; + RoomWrapper *sampleWrapper; + + sampleModel.addRoom(QStringLiteral("RA15"), QStringLiteral("master")); + sampleWrapper = sampleModel.findRoom(QStringLiteral("RA151100ECE")); + QVERIFY(sampleWrapper == nullptr); + sampleModel.addRoom(QStringLiteral("RA151100ECE"), QStringLiteral("myRoom")); + sampleWrapper = sampleModel.findRoom(QStringLiteral("RA151100ECE")); + QCOMPARE(QStringLiteral("myRoom"), sampleWrapper->name()); + + delete sampleWrapper; +} + +void RoomModelTest::shouldAddRoom() +{ + RoomModel sampleModel; + RoomWrapper *sampleWrapper; + + QCOMPARE(sampleModel.rowCount(), 0); + sampleModel.addRoom(QStringLiteral("RA151100ECE"), QStringLiteral("myRoom")); + QCOMPARE(sampleModel.rowCount(), 1); + + sampleWrapper = sampleModel.findRoom(QStringLiteral("RA151100ECE")); + QCOMPARE(QStringLiteral("myRoom"), sampleWrapper->name()); + + delete sampleWrapper; +} + +void RoomModelTest::shouldUpdateRoom() +{ + RoomModel sampleModel; + RoomWrapper *sampleWrapper; + + sampleModel.addRoom(QStringLiteral("RA151100ECE"), QStringLiteral("myRoom")); + + QSignalSpy spy(&sampleModel, &RoomModel::dataChanged); + const QString Id = QStringLiteral("RA151100ECE"); + const QString name = QStringLiteral("newName"); + const QString topic = QStringLiteral("myTopic"); + const QString announcement = QStringLiteral("Happy New Year announcement"); + sampleModel.updateRoom(name, Id, topic, announcement, true); + sampleWrapper = sampleModel.findRoom(Id); + + QCOMPARE(name, sampleWrapper->name()); + QCOMPARE(topic, sampleWrapper->topic()); + QCOMPARE(announcement, sampleWrapper->announcement()); + QVERIFY(sampleWrapper->readOnly()); + QCOMPARE(spy.count(), 1); + + delete sampleWrapper; +} + +void RoomModelTest::shouldUpdateRoomFromQJsonObject() +{ + RoomModel sampleModel; + RoomWrapper *sampleWrapper; + QJsonObject roomData; + + const QString name = QStringLiteral("newName"); + const QString topic = QStringLiteral("myTopic"); + const QString announcement = QStringLiteral("Happy New Year announcement"); + roomData.insert(QLatin1String("rid"), QJsonValue(QLatin1String("RA151100ECE"))); + roomData.insert(QLatin1String("name"), QJsonValue(name)); + roomData.insert(QLatin1String("announcement"), announcement); + roomData.insert(QLatin1String("topic"), topic); + + QCOMPARE(sampleModel.rowCount(), 0); + sampleModel.addRoom(QStringLiteral("RA151100ECE"), QStringLiteral("myRoom")); + QCOMPARE(sampleModel.rowCount(), 1); + + QSignalSpy spy(&sampleModel, &RoomModel::dataChanged); + sampleModel.updateRoom(roomData); + sampleWrapper = sampleModel.findRoom(QStringLiteral("RA151100ECE")); + + QCOMPARE(name, sampleWrapper->name()); + QCOMPARE(topic, sampleWrapper->topic()); + QCOMPARE(announcement, sampleWrapper->announcement()); + QCOMPARE(sampleWrapper->readOnly(), false); + QCOMPARE(spy.count(), 1); + + delete sampleWrapper; +} + +void RoomModelTest::shouldUpdateSubcriptionActionRemoved() +{ + RoomModel sampleModel; + QJsonArray input; + QJsonObject roomData; + roomData.insert(QLatin1String("rid"), QJsonValue(QLatin1String("RA151100ECE"))); + input.append(QJsonValue(QLatin1String("removed"))); + input.append(QJsonValue(roomData)); + + QCOMPARE(sampleModel.rowCount(), 0); + sampleModel.addRoom(QStringLiteral("RA151100ECE"), QStringLiteral("myRoom")); + QCOMPARE(sampleModel.rowCount(), 1); + sampleModel.updateSubscription(input); + QCOMPARE(sampleModel.rowCount(), 0); + + roomData.insert(QLatin1String("rid"), QJsonValue(QLatin1String("RA151100ECE_NEW"))); + input.pop_back(); + input.append(QJsonValue(roomData)); + sampleModel.updateSubscription(input); + QCOMPARE(sampleModel.rowCount(), 0); +} + +void RoomModelTest::shouldUpdateSubcriptionActionInserted() +{ + RoomModel sampleModel; + QJsonArray input; + QJsonObject roomData; + roomData.insert(QLatin1String("rid"), QJsonValue(QLatin1String("RA151100ECE"))); + roomData.insert(QLatin1String("name"), QJsonValue(QLatin1String("myRoom"))); + input.append(QJsonValue(QLatin1String("inserted"))); + input.append(QJsonValue(roomData)); + + QCOMPARE(sampleModel.rowCount(), 0); + sampleModel.updateSubscription(input); + QCOMPARE(sampleModel.rowCount(), 1); + + sampleModel.updateSubscription(input); + QCOMPARE(sampleModel.rowCount(), 1); +} + +void RoomModelTest::shouldUpdateSubcriptionActionUpdated() +{ + RoomModel sampleModel; + QJsonArray input; + QJsonObject roomData; + RoomWrapper *sampleWrapper; + + sampleModel.addRoom(QStringLiteral("RA151100ECE"), QStringLiteral("myRoom")); + + const QString name = QStringLiteral("newName"); + const QString topic = QStringLiteral("myTopic"); + const QString announcement = QStringLiteral("Happy New Year announcement"); + roomData.insert(QLatin1String("rid"), QJsonValue(QLatin1String("RA151100ECE"))); + roomData.insert(QLatin1String("name"), QJsonValue(name)); + roomData.insert(QLatin1String("announcement"), announcement); + roomData.insert(QLatin1String("topic"), topic); + input.append(QJsonValue(QLatin1String("updated"))); + input.append(roomData); + + QCOMPARE(sampleModel.rowCount(), 1); + QSignalSpy spy(&sampleModel, &RoomModel::dataChanged); + sampleModel.updateSubscription(input); + QCOMPARE(sampleModel.rowCount(), 1); + + sampleWrapper = sampleModel.findRoom(QStringLiteral("RA151100ECE")); + + QCOMPARE(name, sampleWrapper->name()); + QCOMPARE(topic, sampleWrapper->topic()); + QCOMPARE(announcement, sampleWrapper->announcement()); + QCOMPARE(sampleWrapper->readOnly(), false); + QCOMPARE(spy.count(), 1); + + delete sampleWrapper; +} + +void RoomModelTest::shouldClear() +{ + RoomModel sampleModel; + + QCOMPARE(sampleModel.rowCount(), 0); + sampleModel.addRoom(QStringLiteral("RA151100ECE"), QStringLiteral("myRoom")); + QCOMPARE(sampleModel.rowCount(), 1); + + sampleModel.clear(); + QCOMPARE(sampleModel.rowCount(), 0); +} + +void RoomModelTest::shouldReset() +{ + RoomModel sampleModel; + RoomWrapper *sampleWrapper; + + const QString Id = QStringLiteral("RA151100ECE"); + const QString name = QStringLiteral("myRoom"); + QCOMPARE(sampleModel.rowCount(), 0); + sampleModel.addRoom(QStringLiteral("RA151100ECE"), QStringLiteral("myRoom")); + QCOMPARE(sampleModel.rowCount(), 1); + //TODO: should uncomment this after enabling cache in roomModel +/* + sampleModel.reset(); + QCOMPARE(1, sampleModel.rowCount()); + sampleWrapper = sampleModel.findRoom(Id); + QCOMPARE(name, sampleWrapper->name()); + */ + +} + +void RoomModelTest::shouldReturnDataDefault() +{ + RoomModel sampleModel; + QVariant output; + QString Id = QStringLiteral("RA151100ECE"); + QString name = QStringLiteral("myRoom"); + sampleModel.addRoom(Id, name); + + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomName); + QCOMPARE(output.toString(), name); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomID); + QCOMPARE(output.toString(), Id); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomSelected); + QCOMPARE(output.toBool(), false); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomType); //channel type + QVERIFY(output.toString().isEmpty()); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomUserID); + QVERIFY(output.toString().isEmpty()); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomUserName); + QVERIFY(output.toString().isEmpty()); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomTopic); + QVERIFY(output.toString().isEmpty()); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomMutedUsers); + QVERIFY(output.toStringList().isEmpty()); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomJitsiTimeout); + QCOMPARE(output, QVariant(qint64(-1))); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomRo); + QCOMPARE(output.toBool(), false); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomAnnoucement); + QVERIFY(output.toString().isEmpty()); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomUnread); + QCOMPARE(output, QVariant(int(-1))); //quint64 not used in room.cpp??? + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomFavorite); + QCOMPARE(output.toBool(), false); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomOpen); + QCOMPARE(output.toBool(), false); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomSection); + QVERIFY(output.toString().isEmpty()); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomOrder); + QCOMPARE(output, QVariant(int(6))); // not favorite (3) + no channel selected or 'p' (3) = total order(6) + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomIcon); + QCOMPARE(output, QVariant(QIcon())); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomStatus); + QVERIFY(output.toString().isEmpty());//still status needs to be implemented in roomModel.cpp +} + +void RoomModelTest::shouldReturnData() +{ + Room *input = new Room(); + const QString Id = QStringLiteral("RA151100ECE"); + const QString name = QStringLiteral("myRoom"); + const bool selected = true; + const QString roomType = QStringLiteral("p"); + const QString userId = QStringLiteral("sdfsdfs"); + const QString userName = QStringLiteral("pp"); + const QString topic = QStringLiteral("topic"); + const QStringList mutedUsers = QStringList{QStringLiteral("mutedUsers"), QStringLiteral("muted2")}; + const qint64 time = 55; + const bool readOnly = true; + const QString announcement = QStringLiteral("AA"); + const int unread = 66; + const bool favorite = true; + const bool open = true; + + input->setId(Id); + input->setName(name); + input->setSelected(selected); + input->setChannelType(roomType); + input->setUserId(userId); + input->setUserName(userName); + input->setTopic(topic); + input->setMutedUsers(mutedUsers); + input->setJitsiTimeout(time); + input->setReadOnly(readOnly); + input->setAnnouncement(announcement); + input->setUnread(unread); + input->setFavorite(favorite); + input->setOpen(open); + + + RoomModel sampleModel; + QVariant output; + sampleModel.addRoom(input);//don't pass address. pass pointer variable + + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomName); + QCOMPARE(output.toString(), name); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomID); + QCOMPARE(output.toString(), Id); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomSelected); + QCOMPARE(output.toBool(), selected); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomType); //channel type + QCOMPARE(output.toString(), roomType); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomUserID); + QCOMPARE(output.toString(), userId); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomUserName); + QCOMPARE(output.toString(), userName); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomTopic); + QCOMPARE(output.toString(), topic); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomMutedUsers); + QCOMPARE(output.toStringList(), mutedUsers); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomJitsiTimeout); + QCOMPARE(output, QVariant(time)); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomRo); + QCOMPARE(output.toBool(), readOnly); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomAnnoucement); + QCOMPARE(output.toString(), announcement); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomUnread); + QCOMPARE(output, QVariant(unread)); //quint64 not used in room.cpp??? + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomFavorite); + QCOMPARE(output.toBool(), favorite); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomOpen); + QCOMPARE(output.toBool(), open); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomSection); + QCOMPARE(output.toString(), QStringLiteral("Favorites")); //first priority for favrites and then to channels + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomOrder); + QCOMPARE(output, QVariant(int(3))); // not favorite (0) + no channel selected or 'p' (3) = total order(3) + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomIcon); + QCOMPARE(output, QVariant(QIcon::fromTheme(QStringLiteral("lock")))); + output = sampleModel.data(sampleModel.index(0), RoomModel::RoomStatus); + QVERIFY(output.toString().isEmpty());//still status needs to be implemented in roomModel.cpp +} + + + + + diff --git a/autotests/usertest.h b/autotests/usertest.h --- a/autotests/usertest.h +++ b/autotests/usertest.h @@ -31,6 +31,12 @@ ~UserTest() = default; private Q_SLOTS: void shouldHaveDefaultValue(); + void shouldSetAndGetName(); + void shouldSetAndGetStatus(); + void shouldSetAndGetUserId(); + void shouldSetAndGetListRooms(); + void shouldParseUser(); + void checkEqualsAndUnequalsOperator(); }; #endif // USERTEST_H diff --git a/autotests/usertest.cpp b/autotests/usertest.cpp --- a/autotests/usertest.cpp +++ b/autotests/usertest.cpp @@ -20,7 +20,10 @@ #include "usertest.h" #include "user.h" + #include +#include +#include QTEST_MAIN(UserTest) UserTest::UserTest(QObject *parent) @@ -36,3 +39,131 @@ QVERIFY(u.status().isEmpty()); QVERIFY(u.listRooms().isEmpty()); } + +void UserTest::shouldSetAndGetName() +{ + User sampleUser; + QSignalSpy spy(&sampleUser, &User::nameChanged); + QString name = QStringLiteral("Maxwell"); + sampleUser.setName(name); + + QCOMPARE(sampleUser.name(), name); + QCOMPARE(spy.count(), 1); + + name = QStringLiteral("Maxwell_NEW"); + sampleUser.setName(name); + QCOMPARE(sampleUser.name(), name); + QCOMPARE(spy.count(), 2); + + name = QStringLiteral("Maxwell_NEW"); + sampleUser.setName(name); + QCOMPARE(sampleUser.name(), name); + QCOMPARE(spy.count(), 2); +} + +void UserTest::shouldSetAndGetUserId() +{ + User sampleUser; + QString Id = QStringLiteral("RA1511ECE"); + sampleUser.setUserId(Id); + + QCOMPARE(sampleUser.userId(), Id); + + Id = QStringLiteral("RA1511ECE_NEW"); + sampleUser.setUserId(Id); + QCOMPARE(sampleUser.userId(), Id); + + Id = QStringLiteral("RA1511ECE_NEW"); + sampleUser.setUserId(Id); + QCOMPARE(sampleUser.userId(), Id); +} + + +void UserTest::shouldSetAndGetStatus() +{ + User sampleUser; + QString status = QStringLiteral("myStatus"); + + QSignalSpy spy(&sampleUser, &User::statusChanged); + sampleUser.setStatus(status); + + QCOMPARE(sampleUser.status(), status); + QCOMPARE(spy.count(), 1); + + status = QStringLiteral("myStatus_NEW"); + sampleUser.setStatus(status); + QCOMPARE(sampleUser.status(), status); + QCOMPARE(spy.count(), 2); + + status = QStringLiteral("myStatus_NEW"); + sampleUser.setStatus(status); + QCOMPARE(sampleUser.status(), status); + QCOMPARE(spy.count(), 2); +} + + +void UserTest::shouldSetAndGetListRooms() +{ + User sampleUser; + QStringList roomList; + QString room1 = QStringLiteral("myRoom1"); + QString room2 = QStringLiteral("myRoom2"); + QString room3 = QStringLiteral("myRoom3"); + roomList.append(room1); + roomList.append(room2); + roomList.append(room3); + + QSignalSpy spy(&sampleUser, &User::listRoomsChanged); + sampleUser.setListRooms(roomList); + QCOMPARE(sampleUser.listRooms(), roomList); + QCOMPARE(spy.count(), 1); +} + + +void UserTest::shouldParseUser() +{ + User sampleUser; + QJsonObject object; + QJsonObject fields; + const QString name = QStringLiteral("Newton"); + const QString status = QStringLiteral("Newton"); + fields.insert(QLatin1String("name"), QJsonValue(name)); + fields.insert(QLatin1String("status"), QJsonValue(status)); + object.insert(QLatin1String("id"), QJsonValue(QLatin1String("RA151100ECE"))); + object.insert(QLatin1String("fields"), fields); + + QSignalSpy spyN(&sampleUser, &User::nameChanged); + QSignalSpy spyS(&sampleUser, &User::statusChanged); + sampleUser.parseUser(object); + QCOMPARE(sampleUser.name(), name); + QCOMPARE(sampleUser.status(), status); + QCOMPARE(spyN.count(), 1); + QCOMPARE(spyS.count(), 1); + + //here signal should not be emmited since we are passing same values + sampleUser.parseUser(object); + QCOMPARE(spyN.count(), 1); + QCOMPARE(spyS.count(), 1); +} + + +void UserTest::checkEqualsAndUnequalsOperator() +{ + User sampleuser, sampleuserOther; + QString Id = QStringLiteral("RA151100ECE"); + QString name = QStringLiteral("Robert Segwick"); + QString status = QStringLiteral("myStaus"); + + sampleuser.setUserId(Id); + sampleuser.setName(name); + sampleuser.setStatus(status); + QVERIFY(sampleuser != sampleuserOther); + + sampleuserOther.setUserId(Id); + sampleuserOther.setName(name); + sampleuserOther.setStatus(status); + QVERIFY(sampleuser == sampleuserOther); + + sampleuserOther.setName(QLatin1String("Robert Segwick_NEW")); + QVERIFY(sampleuser != sampleuserOther); +} diff --git a/src/room.cpp b/src/room.cpp --- a/src/room.cpp +++ b/src/room.cpp @@ -103,6 +103,9 @@ if (json.contains(QStringLiteral("topic"))) { setTopic(json[QStringLiteral("topic")].toString()); } + if (json.contains(QStringLiteral("name"))) { + setName(json[QStringLiteral("name")].toString()); + } } bool Room::selected() const diff --git a/src/roommodel.cpp b/src/roommodel.cpp --- a/src/roommodel.cpp +++ b/src/roommodel.cpp @@ -230,7 +230,7 @@ const QString actionName = array[0].toString(); const QJsonObject roomData = array[1].toObject(); if (actionName == QStringLiteral("removed")) { - qDebug() << "REMOVE ROOM name " << roomData.value(QLatin1String("name")) << " rid " << roomData.value(QLatin1String("rid")); + qCDebug(RUQOLA_LOG) << "REMOVE ROOM name " << roomData.value(QLatin1String("name")) << " rid " << roomData.value(QLatin1String("rid")); const QString id = roomData.value(QLatin1String("rid")).toString(); const int roomCount{ mRoomsList.count() @@ -244,30 +244,29 @@ } } } else if (actionName == QStringLiteral("inserted")) { - //qDebug() << "INSERT ROOM name " << roomData.value(QLatin1String("name")) << " rid " << roomData.value(QLatin1String("rid")); + qCDebug(RUQOLA_LOG) << "INSERT ROOM name " << roomData.value(QLatin1String("name")) << " rid " << roomData.value(QLatin1String("rid")); addRoom(roomData.value(QLatin1String("rid")).toString(), roomData.value(QLatin1String("name")).toString(), false); } else if (actionName == QStringLiteral("updated")) { - //qDebug() << "UPDATE ROOM name " << roomData.value(QLatin1String("name")).toString() << " rid " << roomData.value(QLatin1String("rid")) << " roomData " << roomData; + qCDebug(RUQOLA_LOG) << "UPDATE ROOM name " << roomData.value(QLatin1String("name")).toString() << " rid " << roomData.value(QLatin1String("rid")) << " roomData " << roomData; updateRoom(roomData); } else if (actionName == QStringLiteral("changed")) { - //qDebug() << "CHANGED ROOM name " << roomData.value(QLatin1String("name")).toString() << " rid " << roomData.value(QLatin1String("rid")) << " roomData " << roomData; - //qDebug() << " Not implementer changed room yet"; + qCDebug(RUQOLA_LOG) << "CHANGED ROOM name " << roomData.value(QLatin1String("name")).toString() << " rid " << roomData.value(QLatin1String("rid")) << " roomData " << roomData; + qCDebug(RUQOLA_LOG) << " Not implementer changed room yet"; updateRoom(roomData); } else { qCDebug(RUQOLA_LOG) << " Undefined type" << actionName; } } void RoomModel::updateRoom(const QJsonObject &roomData) { - const QString roomName = roomData.value(QLatin1String("name")).toString(); - if (!roomName.isEmpty()) { + const QString roomId = roomData.value(QLatin1String("rid")).toString(); + if (!roomId.isEmpty()) { const int roomCount{ mRoomsList.size() }; for (int i = 0; i < roomCount; ++i) { - if (mRoomsList.at(i)->name() == roomName) { - //TODO change with rid and not roomname as it can be changed! + if (mRoomsList.at(i)->id() == roomId) { qCDebug(RUQOLA_LOG) << " void RoomModel::updateRoom(const QJsonArray &array) room found"; Room *room = mRoomsList.at(i); room->parseUpdateRoom(roomData); diff --git a/src/user.h b/src/user.h --- a/src/user.h +++ b/src/user.h @@ -62,6 +62,7 @@ Q_INVOKABLE QString iconFromStatus() const; bool operator ==(const User &other) const; + bool operator !=(const User &other) const; Q_SIGNALS: void nameChanged(); diff --git a/src/user.cpp b/src/user.cpp --- a/src/user.cpp +++ b/src/user.cpp @@ -77,6 +77,11 @@ && (mListRooms == other.listRooms()); } +bool User::operator !=(const User &other) const +{ + return (! operator ==(other)); +} + QStringList User::listRooms() const { return mListRooms;