From: allexzander Date: Fri, 4 Dec 2020 11:01:04 +0000 (+0200) Subject: Added sharing via email. X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~22^2~23^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6e8658dc2c51f240f1f4aa4e58a60bc170b5f56f;p=nextcloud-desktop.git Added sharing via email. Signed-off-by: allexzander --- diff --git a/src/gui/sharee.cpp b/src/gui/sharee.cpp index f7a525807..a44f0d1b9 100644 --- a/src/gui/sharee.cpp +++ b/src/gui/sharee.cpp @@ -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> 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>& 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 diff --git a/src/gui/sharee.h b/src/gui/sharee.h index c6fbcfe29..d776360ad 100644 --- a/src/gui/sharee.h +++ b/src/gui/sharee.h @@ -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, diff --git a/src/gui/sharemanager.h b/src/gui/sharemanager.h index daac8bfc8..64a860d14 100644 --- a/src/gui/sharemanager.h +++ b/src/gui/sharemanager.h @@ -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;