[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [ruqola] /: Check if we can modify room
From:       Laurent Montel <null () kde ! org>
Date:       2018-02-28 21:14:36
Message-ID: E1er93c-0007D3-3C () code ! kde ! org
[Download RAW message or body]

Git commit 444b874a3050e81d992338951acc76997950f892 by Laurent Montel.
Committed on 28/02/2018 at 21:14.
Pushed by mlaurent into branch 'master'.

Check if we can modify room

M  +2    -2    autotests/roommodeltest.cpp
M  +4    -6    autotests/roomtest.cpp
M  +13   -3    autotests/roomwrappertest.cpp
M  +1    -0    autotests/roomwrappertest.h
M  +2    -2    src/model/roommodel.cpp
M  +6    -0    src/qml/ChannelInfoDialog.qml
M  +3    -5    src/qml/PrivateChannelInfoDialog.qml
M  +7    -0    src/qml/TextFieldEditor.qml
M  +6    -4    src/rocketchataccount.cpp
M  +2    -0    src/rocketchataccount.h
M  +58   -25   src/room.cpp
M  +8    -7    src/room.h
M  +7    -2    src/roomwrapper.cpp
M  +4    -2    src/roomwrapper.h
M  +7    -0    src/utils.cpp
M  +1    -0    src/utils.h

https://commits.kde.org/ruqola/444b874a3050e81d992338951acc76997950f892

diff --git a/autotests/roommodeltest.cpp b/autotests/roommodeltest.cpp
index fa259ee..79dc262 100644
--- a/autotests/roommodeltest.cpp
+++ b/autotests/roommodeltest.cpp
@@ -425,8 +425,8 @@ void RoomModelTest::shouldReturnData()
     input->setName(name);
     input->setSelected(selected);
     input->setChannelType(roomType);
-    input->setUserId(userId);
-    input->setUserName(userName);
+    input->setRoomCreatorUserId(userId);
+    input->setRoomCreatorUserName(userName);
     input->setTopic(topic);
     input->setMutedUsers(mutedUsers);
     input->setJitsiTimeout(time);
diff --git a/autotests/roomtest.cpp b/autotests/roomtest.cpp
index a620722..5664abf 100644
--- a/autotests/roomtest.cpp
+++ b/autotests/roomtest.cpp
@@ -63,8 +63,8 @@ void RoomTest::shouldSerialized()
     input.setChannelType(QStringLiteral("p"));
     input.setName(QStringLiteral("d"));
     input.setAnnouncement(QStringLiteral("AA"));
-    input.setUserName(QStringLiteral("pp"));
-    input.setUserId(QStringLiteral("sdfsdfs"));
+    input.setRoomCreatorUserName(QStringLiteral("pp"));
+    input.setRoomCreatorUserId(QStringLiteral("sdfsdfs"));
     input.setTopic(QStringLiteral("topic"));
     input.setMutedUsers(QStringList{QStringLiteral("mutedUsers"), \
QStringLiteral("muted2")});  input.setJitsiTimeout(55);
@@ -90,7 +90,6 @@ void RoomTest::shouldEmitSignals()
     QSignalSpy spyannouncementChanged(&input, &Room::announcementChanged);
     QSignalSpy spytopicChanged(&input, &Room::topicChanged);
     QSignalSpy spyfavoriteChanged(&input, &Room::favoriteChanged);
-    QSignalSpy spyuserIdChanged(&input, &Room::userIdChanged);
     QSignalSpy spyalertChanged(&input, &Room::alertChanged);
     QSignalSpy spyreadOnlyChanged(&input, &Room::readOnlyChanged);
     QSignalSpy spyunreadChanged(&input, &Room::unreadChanged);
@@ -101,8 +100,8 @@ void RoomTest::shouldEmitSignals()
     input.setChannelType(QStringLiteral("p"));
     input.setName(QStringLiteral("d"));
     input.setAnnouncement(QStringLiteral("AA"));
-    input.setUserName(QStringLiteral("pp"));
-    input.setUserId(QStringLiteral("sdfsdfs"));
+    input.setRoomCreatorUserName(QStringLiteral("pp"));
+    input.setRoomCreatorUserId(QStringLiteral("sdfsdfs"));
     input.setTopic(QStringLiteral("topic"));
     input.setMutedUsers(QStringList{QStringLiteral("mutedUsers"), \
QStringLiteral("muted2")});  input.setJitsiTimeout(55);
@@ -120,7 +119,6 @@ void RoomTest::shouldEmitSignals()
     QCOMPARE(spyannouncementChanged.count(), 1);
     QCOMPARE(spytopicChanged.count(), 1);
     QCOMPARE(spyfavoriteChanged.count(), 1);
-    QCOMPARE(spyuserIdChanged.count(), 1);
     QCOMPARE(spyalertChanged.count(), 1);
     QCOMPARE(spyreadOnlyChanged.count(), 1);
     QCOMPARE(spyunreadChanged.count(), 1);
diff --git a/autotests/roomwrappertest.cpp b/autotests/roomwrappertest.cpp
index 89cde45..167eef9 100644
--- a/autotests/roomwrappertest.cpp
+++ b/autotests/roomwrappertest.cpp
@@ -40,7 +40,7 @@ void RoomWrapperTest::shouldHaveDefaultValue()
     QVERIFY(w.channelType().isEmpty());
     QVERIFY(!w.favorite());
     QVERIFY(!w.blocker());
-    QVERIFY(w.userId().isEmpty());
+    QVERIFY(w.roomCreatorUserId().isEmpty());
     QVERIFY(w.rid().isEmpty());
     QVERIFY(w.description().isEmpty());
     QVERIFY(!w.archived());
@@ -272,7 +272,7 @@ void RoomWrapperTest::shouldAssignValue()
     //
 
     const QString userId = QStringLiteral("foo");
-    room->setUserId(userId);
+    room->setRoomCreatorUserId(userId);
     QCOMPARE(spyRoomAnnoucementChanged.count(), 0);
     QCOMPARE(spyRoomTopicChanged.count(), 0);
     QCOMPARE(spyRoomNameChanged.count(), 0);
@@ -280,7 +280,7 @@ void RoomWrapperTest::shouldAssignValue()
     QCOMPARE(spyRoomBlockerChanged.count(), 0);
     QCOMPARE(spyRoomDescriptionChanged.count(), 0);
     QCOMPARE(spyRoomArchivedChanged.count(), 0);
-    QCOMPARE(w.userId(), userId);
+    QCOMPARE(w.roomCreatorUserId(), userId);
 
     const QString rId = QStringLiteral("foo");
     room->setId(rId);
@@ -295,3 +295,13 @@ void RoomWrapperTest::shouldAssignValue()
 
     delete room;
 }
+
+void RoomWrapperTest::shouldVerifyCanBeModify()
+{
+    Room *room = new Room();
+    room->setRoomCreatorUserId(QStringLiteral("foo"));
+    RoomWrapper w(room);
+    QVERIFY(!w.canBeModify());
+    //TODO check true but we need to add rocketchataccount;
+    delete room;
+}
diff --git a/autotests/roomwrappertest.h b/autotests/roomwrappertest.h
index 9477d78..194af69 100644
--- a/autotests/roomwrappertest.h
+++ b/autotests/roomwrappertest.h
@@ -32,6 +32,7 @@ public:
 private Q_SLOTS:
     void shouldHaveDefaultValue();
     void shouldAssignValue();
+    void shouldVerifyCanBeModify();
 };
 
 #endif // ROOMWRAPPERTEST_H
diff --git a/src/model/roommodel.cpp b/src/model/roommodel.cpp
index 55de512..1724d47 100644
--- a/src/model/roommodel.cpp
+++ b/src/model/roommodel.cpp
@@ -175,9 +175,9 @@ QVariant RoomModel::data(const QModelIndex &index, int role) \
const  case RoomModel::RoomType:
         return r->channelType();
     case RoomModel::RoomUserID:
-        return r->userId();
+        return r->roomCreatorUserId();
     case RoomModel::RoomUserName:
-        return r->userName();
+        return r->roomCreatorUserName();
     case RoomModel::RoomTopic:
         return r->topic();
     case RoomModel::RoomMutedUsers:
diff --git a/src/qml/ChannelInfoDialog.qml b/src/qml/ChannelInfoDialog.qml
index 92aef11..f3a85c0 100644
--- a/src/qml/ChannelInfoDialog.qml
+++ b/src/qml/ChannelInfoDialog.qml
@@ -47,6 +47,11 @@ QQC2.Dialog {
 
     function initializeAndOpen()
     {
+        channelNameField.setReadOnly(!roomInfo.canBeModify);
+        channelCommentField.setReadOnly(!roomInfo.canBeModify);
+        channelAnnoucementField.setReadOnly(!roomInfo.canBeModify);
+        channelDescriptionField.setReadOnly(!roomInfo.canBeModify);
+
         open();
     }
 
@@ -58,6 +63,7 @@ QQC2.Dialog {
         TextFieldEditor {
             id: channelNameField
             textField: roomInfo === null ? "" : roomInfo.name
+
             onUpdateValue: {
                 if (newVal != "") {
                     channelInfoDialog.modifyChannelSetting(channelName, \
                RocketChatAccount.Name, newVal)
diff --git a/src/qml/PrivateChannelInfoDialog.qml \
b/src/qml/PrivateChannelInfoDialog.qml index 64f4e1c..fcb1d5d 100644
--- a/src/qml/PrivateChannelInfoDialog.qml
+++ b/src/qml/PrivateChannelInfoDialog.qml
@@ -41,17 +41,15 @@ QQC2.Dialog {
 
     function initializeAndOpen()
     {
-        avatarRect.avatarurl = appid.rocketChatAccount.avatarUrl(roomInfo.userId)
-        //console.log("ddddd " + avatarRect.avatarurl + " roomInfo.rid" + \
roomInfo.userId) +        avatarRect.avatarurl = \
appid.rocketChatAccount.avatarUrlFromDirectChannel(roomInfo.rid)  open();
     }
 
     ColumnLayout {
         AvatarImage {
             id: avatarRect
-            avatarurl: roomInfo ? appid.rocketChatAccount.avatarUrl(roomInfo.userId) \
                : ""
-            //aliasname: i_aliasname
-            //username: i_username
+            implicitHeight: 160
+            implicitWidth: 160
         }
 
         Button {
diff --git a/src/qml/TextFieldEditor.qml b/src/qml/TextFieldEditor.qml
index dcfba47..e3debe7 100644
--- a/src/qml/TextFieldEditor.qml
+++ b/src/qml/TextFieldEditor.qml
@@ -30,6 +30,12 @@ RowLayout {
     signal updateValue(string newVal)
     property alias textField: channelNameField.text
 
+    function setReadOnly(ro)
+    {
+        channelNameField.readOnly = ro;
+        channelIcon.visible = !ro;
+    }
+
     function clear()
     {
         channelNameField.clear()
@@ -47,6 +53,7 @@ RowLayout {
     }
 
     Kirigami.Icon {
+        id: channelIcon
         source: "document-edit"
         width: 24
         height: 24
diff --git a/src/rocketchataccount.cpp b/src/rocketchataccount.cpp
index 94ebd0b..c24b0ac 100644
--- a/src/rocketchataccount.cpp
+++ b/src/rocketchataccount.cpp
@@ -307,6 +307,11 @@ void RocketChatAccount::updateMessage(const QString &roomID, \
                const QString &mess
     ddp()->method(QStringLiteral("updateMessage"), QJsonDocument(json), \
DDPClient::Persistent);  }
 
+QString RocketChatAccount::avatarUrlFromDirectChannel(const QString &rid)
+{
+    return mCache->avatarUrl(Utils::userIdFromDirectChannel(rid, userID()));
+}
+
 QString RocketChatAccount::avatarUrl(const QString &userId)
 {
     return mCache->avatarUrl(userId);
@@ -936,10 +941,7 @@ void RocketChatAccount::blockUser(const QString &rid, bool \
block)  } else {
         //qDebug() << " void RocketChatAccount::blockUser userId " << userId << " \
block " << block << " rid " << rid << " own userdId" << userID();  
-        //Info from fairchat
-        QString userId = rid;
-        userId.remove(userID());
-
+        const QString userId = Utils::userIdFromDirectChannel(rid, userID());
         if (block) {
             ddp()->blockUser(rid, userId);
         } else {
diff --git a/src/rocketchataccount.h b/src/rocketchataccount.h
index 11f3224..a10e6a7 100644
--- a/src/rocketchataccount.h
+++ b/src/rocketchataccount.h
@@ -149,6 +149,7 @@ public:
     Q_INVOKABLE void setInputTextChanged(const QString &str, int position);
     Q_INVOKABLE QString replaceWord(const QString &newWord, const QString &str, int \
position);  Q_INVOKABLE void blockUser(const QString &userId, bool block);
+    Q_INVOKABLE QString avatarUrlFromDirectChannel(const QString &rid);
 
     SearchChannelModel *searchChannelModel() const;
     UserCompleterModel *userCompleterModel() const;
@@ -217,6 +218,7 @@ public:
     void updateUser(const QJsonObject &object);
 
     void initializeSettings(const QString &accountFileName);
+
 Q_SIGNALS:
     void connectedChanged();
     void accountNameChanged();
diff --git a/src/room.cpp b/src/room.cpp
index ab96481..3b61a62 100644
--- a/src/room.cpp
+++ b/src/room.cpp
@@ -20,6 +20,7 @@
  *
  */
 
+#include "rocketchataccount.h"
 #include "room.h"
 #include "ruqola_debug.h"
 #include "model/usersforroommodel.h"
@@ -33,6 +34,7 @@
 
 Room::Room(RocketChatAccount *account, QObject *parent)
     : QObject(parent)
+    , mRocketChatAccount(account)
 {
     mUsersModelForRoom = new UsersForRoomModel(this);
     mUsersModelForRoom->setObjectName(QStringLiteral("usersforroommodel"));
@@ -61,8 +63,8 @@ bool Room::isEqual(const Room &other) const
            && (mChannelType == other.channelType())
            && (mName == other.name())
            && (mAnnouncement == other.announcement())
-           && (mUserName == other.userName())
-           && (mUserId == other.userId())
+           && (mRoomCreatorUserName == other.roomCreatorUserName())
+           && (mRoomCreateUserId == other.roomCreatorUserId())
            && (mTopic == other.topic())
            && (mMutedUsers == other.mutedUsers())
            && (mJitsiTimeout == other.jitsiTimeout())
@@ -87,8 +89,8 @@ QDebug operator <<(QDebug d, const Room &t)
     d << "type :" << t.channelType();
     d << "name :" << t.name();
     d << "mAnnouncement :" << t.announcement();
-    d << "userName :" << t.userName();
-    d << "userID :" << t.userId();
+    d << "roomCreaterUserName :" << t.roomCreatorUserName();
+    d << "roomCreaterUserID :" << t.roomCreatorUserId();
     d << "topic :" << t.topic();
     d << "mutedUsers :" << t.mutedUsers();
     d << "jitsiTimeout :" << t.jitsiTimeout();
@@ -103,12 +105,22 @@ QDebug operator <<(QDebug d, const Room &t)
     return d;
 }
 
+bool Room::canBeModify() const
+{
+    if (mRocketChatAccount) {
+        qDebug() <<  "mRoomCreateUserId"<<mRoomCreateUserId << " \
mRocketChatAccount->userID()"<<mRocketChatAccount->userID(); +        return \
(mRoomCreateUserId == mRocketChatAccount->userID()); +    }
+    return false;
+}
+
 void Room::parseUpdateRoom(const QJsonObject &json)
 {
     qDebug() << " void Room::parseUpdateRoom(const QJsonObject &json)"<<json;
-    if (json.contains(QLatin1String("_id"))) {
-        setUserId(json.value(QLatin1String("_id")).toString());
-    }
+    // ???? FIXME it's not _id
+//    if (json.contains(QLatin1String("_id"))) {
+//        setRoomCreatorUserId(json.value(QLatin1String("_id")).toString());
+//    }
     if (json.contains(QLatin1String("rid"))) {
         setId(json.value(QLatin1String("rid")).toString());
     }
@@ -145,6 +157,13 @@ void Room::parseUpdateRoom(const QJsonObject &json)
     } else {
         setArchived(false);
     }
+    const QJsonValue ownerValue = json.value(QLatin1String("u"));
+    if (!ownerValue.isUndefined()) {
+        const QJsonObject objOwner = ownerValue.toObject();
+        setRoomCreatorUserId(objOwner.value(QLatin1String("_id")).toString());
+        setRoomCreatorUserName(objOwner.value(QLatin1String("username")).toString());
 +    }
+    qDebug() << " *thus" << *this;
 }
 
 bool Room::selected() const
@@ -196,28 +215,27 @@ void Room::setMutedUsers(const QStringList &mutedUsers)
     }
 }
 
-QString Room::userId() const
+QString Room::roomCreatorUserId() const
 {
-    return mUserId;
+    return mRoomCreateUserId;
 }
 
-void Room::setUserId(const QString &userId)
+void Room::setRoomCreatorUserId(const QString &userId)
 {
-    if (mUserId != userId) {
-        mUserId = userId;
+    if (mRoomCreateUserId != userId) {
+        mRoomCreateUserId = userId;
     }
 }
 
-QString Room::userName() const
+QString Room::roomCreatorUserName() const
 {
-    return mUserName;
+    return mRoomCreatorUserName;
 }
 
-void Room::setUserName(const QString &userName)
+void Room::setRoomCreatorUserName(const QString &userName)
 {
-    if (mUserName != userName) {
-        mUserName = userName;
-        Q_EMIT userIdChanged();
+    if (mRoomCreatorUserName != userName) {
+        mRoomCreatorUserName = userName;
     }
 }
 
@@ -347,7 +365,7 @@ void Room::setName(const QString &name)
 void Room::parseRoom(const QJsonObject &json)
 {
     qDebug() << " void Room::parseRoom(const QJsonObject &json)"<<json;
-    setUserId(json.value(QLatin1String("_id")).toString());
+    //setRoomCreatorUserId(json.value(QLatin1String("_id")).toString());
     setId(json.value(QLatin1String("rid")).toString());
     setName(json[QStringLiteral("name")].toString());
     setTopic(json[QStringLiteral("topic")].toString());
@@ -364,13 +382,22 @@ void Room::parseRoom(const QJsonObject &json)
     } else {
         setBlocker(false);
     }
+    const QJsonValue ownerValue = json.value(QLatin1String("u"));
+    if (!ownerValue.isUndefined()) {
+        const QJsonObject objOwner = ownerValue.toObject();
+        setRoomCreatorUserId(objOwner.value(QLatin1String("_id")).toString());
+        setRoomCreatorUserName(objOwner.value(QLatin1String("username")).toString());
 +    }
+    qDebug() << " *thus" << *this;
 }
 
 void Room::parseSubscriptionRoom(const QJsonObject &json)
 {
     const QString roomID = json.value(QLatin1String("rid")).toString();
     setId(roomID);
-    setUserId(json.value(QLatin1String("_id")).toString());
+    //????? FIXME
+    //setRoomCreatorUserId(json.value(QLatin1String("_id")).toString());
+    //
     setName(json[QStringLiteral("name")].toString());
     setTopic(json[QStringLiteral("topic")].toString());
     setAnnouncement(json[QStringLiteral("announcement")].toString());
@@ -408,6 +435,13 @@ void Room::parseSubscriptionRoom(const QJsonObject &json)
     for (int i = 0; i < mutedArray.count(); ++i) {
         lst << mutedArray.at(i).toString();
     }
+    const QJsonValue ownerValue = json.value(QLatin1String("u"));
+    if (!ownerValue.isUndefined()) {
+        const QJsonObject objOwner = ownerValue.toObject();
+        setRoomCreatorUserId(objOwner.value(QLatin1String("_id")).toString());
+        setRoomCreatorUserName(objOwner.value(QLatin1String("username")).toString());
 +    }
+    qDebug() << " *thus" << *this;
 
     setMutedUsers(lst);
     //TODO add muted
@@ -421,8 +455,8 @@ Room *Room::fromJSon(const QJsonObject &o)
     r->setId(o[QStringLiteral("rid")].toString());
     r->setChannelType(o[QStringLiteral("t")].toString());
     r->setName(o[QStringLiteral("name")].toString());
-    r->setUserName(o[QStringLiteral("userName")].toString());
-    r->setUserId(o[QStringLiteral("userID")].toString());
+    r->setRoomCreatorUserName(o[QStringLiteral("roomCreatorUserName")].toString());
+    r->setRoomCreatorUserId(o[QStringLiteral("roomCreatorUserID")].toString());
     r->setTopic(o[QStringLiteral("topic")].toString());
     r->setJitsiTimeout(o[QStringLiteral("jitsiTimeout")].toDouble());
     r->setReadOnly(o[QStringLiteral("ro")].toBool());
@@ -434,7 +468,6 @@ Room *Room::fromJSon(const QJsonObject &o)
     r->setOpen(o[QStringLiteral("open")].toBool());
     r->setArchived(o[QStringLiteral("archived")].toBool());
     r->setDescription(o[QStringLiteral("description")].toString());
-    //TODO ???
     r->setBlocker(o[QStringLiteral("blocker")].toBool());
     const QJsonArray mutedArray = o.value(QLatin1String("mutedUsers")).toArray();
     QStringList lst;
@@ -455,8 +488,8 @@ QByteArray Room::serialize(Room *r)
     o[QStringLiteral("rid")] = r->id();
     o[QStringLiteral("t")] = r->channelType();
     o[QStringLiteral("name")] = r->name();
-    o[QStringLiteral("userName")] = r->userName();
-    o[QStringLiteral("userID")] = r->userId();
+    o[QStringLiteral("roomCreatorUserName")] = r->roomCreatorUserName();
+    o[QStringLiteral("roomCreatorUserID")] = r->roomCreatorUserId();
     o[QStringLiteral("topic")] = r->topic();
     o[QStringLiteral("jitsiTimeout")] = r->jitsiTimeout();
     o[QStringLiteral("ro")] = r->readOnly();
diff --git a/src/room.h b/src/room.h
index e7bca88..f877258 100644
--- a/src/room.h
+++ b/src/room.h
@@ -55,11 +55,11 @@ public:
     //we can't use operator== as it tests only id. We need it for autotest
     bool isEqual(const Room &other) const;
 
-    QString userName() const;
-    void setUserName(const QString &userName);
+    QString roomCreatorUserName() const;
+    void setRoomCreatorUserName(const QString &userName);
 
-    QString userId() const;
-    void setUserId(const QString &userId);
+    QString roomCreatorUserId() const;
+    void setRoomCreatorUserId(const QString &userId);
 
     QStringList mutedUsers() const;
     void setMutedUsers(const QStringList &mutedUsers);
@@ -145,12 +145,12 @@ public:
     QString description() const;
     void setDescription(const QString &description);
 
+    bool canBeModify() const;
 Q_SIGNALS:
     void nameChanged();
     void announcementChanged();
     void topicChanged();
     void favoriteChanged();
-    void userIdChanged();
     void alertChanged();
     void readOnlyChanged();
     void unreadChanged();
@@ -177,8 +177,8 @@ private:
     QString mAnnouncement;
 
     // u
-    QString mUserName;
-    QString mUserId;
+    QString mRoomCreatorUserName;
+    QString mRoomCreateUserId;
 
     // topic
     QString mTopic;
@@ -209,6 +209,7 @@ private:
     FilesForRoomFilterProxyModel *mFilesForRoomFilterProxyModel = nullptr;
 
     MessageModel *mMessageModel = nullptr;
+    RocketChatAccount *mRocketChatAccount = nullptr;
 };
 
 LIBRUQOLACORE_EXPORT QDebug operator <<(QDebug d, const Room &t);
diff --git a/src/roomwrapper.cpp b/src/roomwrapper.cpp
index a69378d..9df04f3 100644
--- a/src/roomwrapper.cpp
+++ b/src/roomwrapper.cpp
@@ -82,9 +82,9 @@ QString RoomWrapper::channelType() const
     return mRoom->channelType();
 }
 
-QString RoomWrapper::userId() const
+QString RoomWrapper::roomCreatorUserId() const
 {
-    return mRoom->userId();
+    return mRoom->roomCreatorUserId();
 }
 
 QString RoomWrapper::rid() const
@@ -101,3 +101,8 @@ bool RoomWrapper::archived() const
 {
     return mRoom->archived();
 }
+
+bool RoomWrapper::canBeModify() const
+{
+    return mRoom->canBeModify();
+}
diff --git a/src/roomwrapper.h b/src/roomwrapper.h
index 91b71bd..4f3f060 100644
--- a/src/roomwrapper.h
+++ b/src/roomwrapper.h
@@ -36,8 +36,9 @@ class LIBRUQOLACORE_EXPORT RoomWrapper : public QObject
     Q_PROPERTY(bool readOnly READ readOnly NOTIFY readOnlyChanged)
     Q_PROPERTY(bool blocker READ blocker NOTIFY blockerChanged)
     Q_PROPERTY(QString channelType READ channelType CONSTANT)
-    Q_PROPERTY(QString userId READ userId CONSTANT)
+    Q_PROPERTY(QString roomCreatorUserId READ roomCreatorUserId CONSTANT)
     Q_PROPERTY(QString rid READ rid CONSTANT)
+    Q_PROPERTY(bool canBeModify READ canBeModify CONSTANT)
     Q_PROPERTY(QString description READ description NOTIFY descriptionChanged)
     Q_PROPERTY(bool archived READ archived NOTIFY archivedChanged)
     Q_OBJECT
@@ -54,10 +55,11 @@ public:
     bool readOnly() const;
     bool blocker() const;
     QString channelType() const;
-    QString userId() const;
+    QString roomCreatorUserId() const;
     QString rid() const;
     QString description() const;
     bool archived() const;
+    bool canBeModify() const;
 
 Q_SIGNALS:
     void nameChanged();
diff --git a/src/utils.cpp b/src/utils.cpp
index 47a29b1..ebcbc30 100644
--- a/src/utils.cpp
+++ b/src/utils.cpp
@@ -134,3 +134,10 @@ void Utils::parseNotification(const QJsonArray &contents, \
                QString &message, QStr
         qCDebug(RUQOLA_LOG) << "Problem with notication json: missing payload";
     }
 }
+
+QString Utils::userIdFromDirectChannel(const QString &rid, const QString &userId)
+{
+    QString newUserId = rid;
+    newUserId.remove(userId);
+    return newUserId;
+}
diff --git a/src/utils.h b/src/utils.h
index f40dc1d..539fb36 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -32,6 +32,7 @@ LIBRUQOLACORE_TESTS_EXPORT User::PresenceStatus \
presenceStatusFromString(const Q  LIBRUQOLACORE_TESTS_EXPORT QString \
generateRichText(const QString &markDown, const QMap<QString, QString> &mentions);  \
LIBRUQOLACORE_TESTS_EXPORT QString extractRoomUserFromUrl(QString url);  \
LIBRUQOLACORE_TESTS_EXPORT void parseNotification(const QJsonArray &contents, QString \
&message, QString &title, QString &sender); +LIBRUQOLACORE_TESTS_EXPORT QString \
userIdFromDirectChannel(const QString &rid, const QString &userId);  }
 
 #endif // UTILS_H


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic