Added sharing via email.
authorallexzander <blackslayer4@gmail.com>
Fri, 4 Dec 2020 11:01:04 +0000 (13:01 +0200)
committerallexzander <blackslayer4@gmail.com>
Tue, 8 Dec 2020 09:08:45 +0000 (11:08 +0200)
Signed-off-by: allexzander <blackslayer4@gmail.com>
src/gui/sharee.cpp
src/gui/sharee.h
src/gui/sharemanager.h

index f7a525807025cf3e9fd022e5f1599dca554c4677..a44f0d1b99a46b3657eaf479e82cbed3e7194851 100644 (file)
@@ -38,10 +38,14 @@ QString Sharee::format() const
 
     if (_type == Type::Group) {
         formatted += QLatin1String(" (group)");
+    } else if (_type == Type::Email) {
+        formatted += QLatin1String(" (email)");
     } else if (_type == Type::Federated) {
         formatted += QLatin1String(" (remote)");
     } else if (_type == Type::Circle) {
         formatted += QLatin1String(" (circle)");
+    } else if (_type == Type::Room) {
+        formatted += QLatin1String(" (conversation)");
     }
 
     return formatted;
@@ -81,59 +85,22 @@ void ShareeModel::fetch(const QString &search, const ShareeSet &blacklist)
 
 void ShareeModel::shareesFetched(const QJsonDocument &reply)
 {
-    auto data = reply.object().value("ocs").toObject().value("data").toObject();
-
     QVector<QSharedPointer<Sharee>> newSharees;
 
-    /*
-     * Todo properly loop all of this
-     */
-    auto exact = data.value("exact").toObject();
     {
-        auto users = exact.value("users").toArray();
-        foreach (auto user, users) {
-            newSharees.append(parseSharee(user.toObject()));
-        }
-
-        auto groups = exact.value("groups").toArray();
-        foreach (auto group, groups) {
-            newSharees.append(parseSharee(group.toObject()));
-        }
-
-        auto remotes = exact.value("remotes").toArray();
-        foreach (auto remote, remotes) {
-            newSharees.append(parseSharee(remote.toObject()));
-        }
-
-        auto circles = exact.value("circles").toArray();
-        foreach (auto circle, circles) {
-            newSharees.append(parseSharee(circle.toObject()));
-        }
-    }
+        const QStringList shareeTypes {"users", "groups", "emails", "remotes", "circles", "rooms"};
+
+        const auto appendSharees = [this, &shareeTypes](const QJsonObject &data, QVector<QSharedPointer<Sharee>>& out) {
+            for (const auto &shareeType : shareeTypes) {
+                const auto category = data.value(shareeType).toArray();
+                for (const auto &sharee : category) {
+                    out.append(parseSharee(sharee.toObject()));
+                }
+            }
+        };
 
-    {
-        auto users = data.value("users").toArray();
-        foreach (auto user, users) {
-            newSharees.append(parseSharee(user.toObject()));
-        }
-    }
-    {
-        auto groups = data.value("groups").toArray();
-        foreach (auto group, groups) {
-            newSharees.append(parseSharee(group.toObject()));
-        }
-    }
-    {
-        auto remotes = data.value("remotes").toArray();
-        foreach (auto remote, remotes) {
-            newSharees.append(parseSharee(remote.toObject()));
-        }
-    }
-    {
-        auto circles = data.value("circles").toArray();
-        foreach (auto circle, circles) {
-            newSharees.append(parseSharee(circle.toObject()));
-        }
+        appendSharees(reply.object().value("ocs").toObject().value("data").toObject(), newSharees);
+        appendSharees(reply.object().value("ocs").toObject().value("data").toObject().value("exact").toObject(), newSharees);
     }
 
     // Filter sharees that we have already shared with
index c6fbcfe29078363559c354773ea2e1dc6d828dd2..d776360ad2b58dda9c37f91ce47fe5b7b20a20f4 100644 (file)
@@ -40,8 +40,10 @@ public:
     enum Type {
         User = 0,
         Group = 1,
+        Email = 4,
         Federated = 6,
-        Circle = 7
+        Circle = 7,
+        Room = 10
     };
 
     explicit Sharee(const QString shareWith,
index daac8bfc8a1d141b6dfc2f662e080e11d4417f58..64a860d14fd597d400410f27cd988f153d5dc89e 100644 (file)
@@ -44,8 +44,10 @@ public:
         TypeUser = Sharee::User,
         TypeGroup = Sharee::Group,
         TypeLink = 3,
+        TypeEmail = Sharee::Email,
         TypeRemote = Sharee::Federated,
-        TypeCircle = Sharee::Circle
+        TypeCircle = Sharee::Circle,
+        TypeRoom = Sharee::Room
     };
 
     using Permissions = SharePermissions;