diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-01-31 13:57:20 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2022-02-04 13:53:42 +0300 |
commit | c370712d8245bda4a901f1d9ff8760a9826b4604 (patch) | |
tree | f84876a9da1b5a20d101bef3f1e67ff55026ffb8 /src/gui/sharee.cpp | |
parent | 322d9d28bb2bbfeeaa84e46c8544e3c845db4356 (diff) |
Replace ocsjob with JsonApiJob
Diffstat (limited to 'src/gui/sharee.cpp')
-rw-r--r-- | src/gui/sharee.cpp | 144 |
1 files changed, 75 insertions, 69 deletions
diff --git a/src/gui/sharee.cpp b/src/gui/sharee.cpp index 9c6db60d1..ca2a328a1 100644 --- a/src/gui/sharee.cpp +++ b/src/gui/sharee.cpp @@ -13,7 +13,7 @@ */ #include "sharee.h" -#include "ocsshareejob.h" +#include "networkjobs/jsonjob.h" #include <QJsonObject> #include <QJsonDocument> @@ -71,74 +71,80 @@ void ShareeModel::fetch(const QString &search, const ShareeSet &blacklist) { _search = search; _shareeBlacklist = blacklist; - OcsShareeJob *job = new OcsShareeJob(_account); - connect(job, &OcsShareeJob::shareeJobFinished, this, &ShareeModel::shareesFetched); - connect(job, &OcsJob::ocsError, this, &ShareeModel::displayErrorMessage); - job->getSharees(_search, _type, 1, 50); -} - -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(); - { - const auto &users = exact.value("users").toArray(); - for (const auto &user : users) { - newSharees.append(parseSharee(user.toObject())); - } - const auto &groups = exact.value("groups").toArray(); - for (const auto &group : groups) { - newSharees.append(parseSharee(group.toObject())); - } - const auto &remotes = exact.value("remotes").toArray(); - for (const auto &remote : remotes) { - newSharees.append(parseSharee(remote.toObject())); - } - } - - { - const auto &users = data.value("users").toArray(); - for (const auto &user : users) { - newSharees.append(parseSharee(user.toObject())); - } - } - { - const auto &groups = data.value("groups").toArray(); - for (const auto &group : groups) { - newSharees.append(parseSharee(group.toObject())); - } - } - { - const auto &remotes = data.value("remotes").toArray(); - for (const auto &remote : remotes) { - newSharees.append(parseSharee(remote.toObject())); - } - } - - // Filter sharees that we have already shared with - QVector<QSharedPointer<Sharee>> filteredSharees; - for (const auto &sharee : qAsConst(newSharees)) { - bool found = false; - for (const auto &blacklistSharee : qAsConst(_shareeBlacklist)) { - if (sharee->type() == blacklistSharee->type() && sharee->shareWith() == blacklistSharee->shareWith()) { - found = true; - break; - } - } - - if (found == false) { - filteredSharees.append(sharee); - } - } - - setNewSharees(filteredSharees); - shareesReady(); + const JsonApiJob::UrlQuery query { + { "search", search }, + { "itemType", _type }, + { "page", "1" }, + { "perPage", "50" } + + }; + auto *job = new JsonApiJob(_account, QStringLiteral("ocs/v1.php/apps/files_sharing/api/v1/sharees"), query, {}, this); + connect(job, &JsonApiJob::finishedSignal, this, [job, this] { + if (!job->ocsSuccess()) { + Q_EMIT displayErrorMessage(job->ocsStatus(), job->ocsMessage()); + } else if (job->parseError().error == QJsonParseError::NoError) { + auto data = job->data().value("ocs").toObject().value("data").toObject(); + + QVector<QSharedPointer<Sharee>> newSharees; + + /* +* Todo properly loop all of this + */ + auto exact = data.value("exact").toObject(); + { + const auto &users = exact.value("users").toArray(); + for (const auto &user : users) { + newSharees.append(parseSharee(user.toObject())); + } + const auto &groups = exact.value("groups").toArray(); + for (const auto &group : groups) { + newSharees.append(parseSharee(group.toObject())); + } + const auto &remotes = exact.value("remotes").toArray(); + for (const auto &remote : remotes) { + newSharees.append(parseSharee(remote.toObject())); + } + } + + { + const auto &users = data.value("users").toArray(); + for (const auto &user : users) { + newSharees.append(parseSharee(user.toObject())); + } + } + { + const auto &groups = data.value("groups").toArray(); + for (const auto &group : groups) { + newSharees.append(parseSharee(group.toObject())); + } + } + { + const auto &remotes = data.value("remotes").toArray(); + for (const auto &remote : remotes) { + newSharees.append(parseSharee(remote.toObject())); + } + } + + // Filter sharees that we have already shared with + QVector<QSharedPointer<Sharee>> filteredSharees; + for (const auto &sharee : qAsConst(newSharees)) { + bool found = false; + for (const auto &blacklistSharee : qAsConst(_shareeBlacklist)) { + if (sharee->type() == blacklistSharee->type() && sharee->shareWith() == blacklistSharee->shareWith()) { + found = true; + break; + } + } + + if (found == false) { + filteredSharees.append(sharee); + } + } + + setNewSharees(filteredSharees); + shareesReady(); + } }); + job->start(); } QSharedPointer<Sharee> ShareeModel::parseSharee(const QJsonObject &data) |