From: Christian Kamm Date: Wed, 26 Apr 2017 10:15:33 +0000 (+0200) Subject: Switch JsonApiJob to Qt5's QJson #5710 X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~750 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=2598579d84a1cca4c05eec919ea8f336e0db79aa;p=nextcloud-desktop.git Switch JsonApiJob to Qt5's QJson #5710 --- diff --git a/src/cmd/cmd.cpp b/src/cmd/cmd.cpp index 553905d8e..32fa03b49 100644 --- a/src/cmd/cmd.cpp +++ b/src/cmd/cmd.cpp @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include #include "account.h" @@ -416,10 +418,10 @@ int main(int argc, char **argv) { JsonApiJob *job = new JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/capabilities")); job->setTimeout(timeoutToUseMsec); - QObject::connect(job, &JsonApiJob::jsonReceived, [&](const QVariantMap &json) { - auto caps = json.value("ocs").toMap().value("data").toMap().value("capabilities"); + QObject::connect(job, &JsonApiJob::jsonReceived, [&](const QJsonDocument &json) { + auto caps = json.object().value("ocs").toObject().value("data").toObject().value("capabilities").toObject(); qDebug() << "Server capabilities" << caps; - account->setCapabilities(caps.toMap()); + account->setCapabilities(caps.toVariantMap()); loop.quit(); }); job->start(); diff --git a/src/gui/activitylistmodel.cpp b/src/gui/activitylistmodel.cpp index b4d213c85..cac40ae86 100644 --- a/src/gui/activitylistmodel.cpp +++ b/src/gui/activitylistmodel.cpp @@ -16,6 +16,8 @@ #include #include #include +#include +#include #include "account.h" #include "accountstate.h" @@ -126,8 +128,8 @@ void ActivityListModel::startFetchJob(AccountState* s) return; } JsonApiJob *job = new JsonApiJob(s->account(), QLatin1String("ocs/v1.php/cloud/activity"), this); - QObject::connect(job, SIGNAL(jsonReceived(QVariantMap, int)), - this, SLOT(slotActivitiesReceived(QVariantMap, int))); + QObject::connect(job, SIGNAL(jsonReceived(QJsonDocument, int)), + this, SLOT(slotActivitiesReceived(QJsonDocument, int))); job->setProperty("AccountStatePtr", QVariant::fromValue>(s)); QList< QPair > params; @@ -140,9 +142,9 @@ void ActivityListModel::startFetchJob(AccountState* s) job->start(); } -void ActivityListModel::slotActivitiesReceived(const QVariantMap& json, int statusCode) +void ActivityListModel::slotActivitiesReceived(const QJsonDocument& json, int statusCode) { - auto activities = json.value("ocs").toMap().value("data").toList(); + auto activities = json.object().value("ocs").toObject().value("data").toArray(); ActivityList list; auto ast = qvariant_cast>(sender()->property("AccountStatePtr")); @@ -152,17 +154,19 @@ void ActivityListModel::slotActivitiesReceived(const QVariantMap& json, int stat _currentlyFetching.remove(ast); foreach( auto activ, activities ) { - auto json = activ.toMap(); + auto json = activ.toObject(); + + qDebug() << "ZZZ" << json; Activity a; a._type = Activity::ActivityType; a._accName = ast->account()->displayName(); - a._id = json.value("id").toLongLong(); + a._id = json.value("id").toInt(); a._subject = json.value("subject").toString(); a._message = json.value("message").toString(); a._file = json.value("file").toString(); - a._link = json.value("link").toUrl(); - a._dateTime = json.value("date").toDateTime(); + a._link = QUrl(json.value("link").toString()); + a._dateTime = QDateTime::fromString(json.value("date").toString(), Qt::ISODate); list.append(a); } diff --git a/src/gui/activitylistmodel.h b/src/gui/activitylistmodel.h index f370144aa..f0f6adda4 100644 --- a/src/gui/activitylistmodel.h +++ b/src/gui/activitylistmodel.h @@ -19,6 +19,8 @@ #include "activitydata.h" +class QJsonDocument; + namespace OCC { class AccountState; @@ -49,7 +51,7 @@ public slots: void slotRemoveAccount( AccountState *ast ); private slots: - void slotActivitiesReceived(const QVariantMap& json, int statusCode); + void slotActivitiesReceived(const QJsonDocument& json, int statusCode); signals: void activityJobStatusCode(AccountState* ast, int statusCode); diff --git a/src/gui/creds/shibboleth/shibbolethuserjob.cpp b/src/gui/creds/shibboleth/shibbolethuserjob.cpp index a36bc2973..e53d78294 100644 --- a/src/gui/creds/shibboleth/shibbolethuserjob.cpp +++ b/src/gui/creds/shibboleth/shibbolethuserjob.cpp @@ -14,7 +14,9 @@ #include "shibbolethuserjob.h" #include -#include + +#include +#include namespace OCC { @@ -22,15 +24,15 @@ ShibbolethUserJob::ShibbolethUserJob(AccountPtr account, QObject* parent) : JsonApiJob(account, QLatin1String("ocs/v1.php/cloud/user"), parent) { setIgnoreCredentialFailure(true); - connect(this, SIGNAL(jsonReceived(QVariantMap, int)), this, SLOT(slotJsonReceived(QVariantMap, int))); + connect(this, SIGNAL(jsonReceived(QJsonDocument, int)), this, SLOT(slotJsonReceived(QJsonDocument, int))); } -void ShibbolethUserJob::slotJsonReceived(const QVariantMap &json, int statusCode) +void ShibbolethUserJob::slotJsonReceived(const QJsonDocument &json, int statusCode) { if( statusCode != 100 ) { qWarning() << "JSON Api call resulted in status code != 100"; } - QString user = json.value("ocs").toMap().value("data").toMap().value("id").toString(); + QString user = json.object().value("ocs").toObject().value("data").toObject().value("id").toString(); //qDebug() << "cloud/user: " << json << "->" << user; emit userFetched(user); } diff --git a/src/gui/creds/shibboleth/shibbolethuserjob.h b/src/gui/creds/shibboleth/shibbolethuserjob.h index 7f53b689c..feb59014a 100644 --- a/src/gui/creds/shibboleth/shibbolethuserjob.h +++ b/src/gui/creds/shibboleth/shibbolethuserjob.h @@ -16,6 +16,8 @@ #include +class QJsonDocument; + namespace OCC { @@ -33,7 +35,7 @@ signals: void userFetched(const QString &user); private slots: - void slotJsonReceived(const QVariantMap &, int statusCode); + void slotJsonReceived(const QJsonDocument &, int statusCode); }; diff --git a/src/gui/notificationconfirmjob.cpp b/src/gui/notificationconfirmjob.cpp index 479c4238d..86721d98b 100644 --- a/src/gui/notificationconfirmjob.cpp +++ b/src/gui/notificationconfirmjob.cpp @@ -15,7 +15,6 @@ #include "notificationconfirmjob.h" #include "networkjobs.h" #include "account.h" -#include "json.h" #include diff --git a/src/gui/ocsjob.cpp b/src/gui/ocsjob.cpp index bdd312d90..a513308cc 100644 --- a/src/gui/ocsjob.cpp +++ b/src/gui/ocsjob.cpp @@ -100,10 +100,10 @@ void OcsJob::start() bool OcsJob::finished() { - const QString replyData = reply()->readAll(); + const QByteArray replyData = reply()->readAll(); QJsonParseError error; - auto json = QJsonDocument::fromJson(replyData.toUtf8(), &error); + auto json = QJsonDocument::fromJson(replyData, &error); if (error.error != QJsonParseError::NoError) { qDebug() << "Could not parse reply to" << _verb diff --git a/src/gui/owncloudsetupwizard.cpp b/src/gui/owncloudsetupwizard.cpp index 6ddf8d3d7..62eb21d11 100644 --- a/src/gui/owncloudsetupwizard.cpp +++ b/src/gui/owncloudsetupwizard.cpp @@ -176,14 +176,14 @@ void OwncloudSetupWizard::slotContinueDetermineAuth() account->setCredentials(CredentialsFactory::create("dummy")); CheckServerJob *job = new CheckServerJob(_ocWizard->account(), this); job->setIgnoreCredentialFailure(true); - connect(job, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotOwnCloudFoundAuth(QUrl,QVariantMap))); + connect(job, SIGNAL(instanceFound(QUrl,QJsonObject)), SLOT(slotOwnCloudFoundAuth(QUrl,QJsonObject))); connect(job, SIGNAL(instanceNotFound(QNetworkReply*)), SLOT(slotNoOwnCloudFoundAuth(QNetworkReply*))); connect(job, SIGNAL(timeout(const QUrl&)), SLOT(slotNoOwnCloudFoundAuthTimeout(const QUrl&))); job->setTimeout((account->url().scheme() == "https") ? 30*1000 : 10*1000); job->start(); } -void OwncloudSetupWizard::slotOwnCloudFoundAuth(const QUrl& url, const QVariantMap &info) +void OwncloudSetupWizard::slotOwnCloudFoundAuth(const QUrl& url, const QJsonObject &info) { auto serverVersion = CheckServerJob::version(info); diff --git a/src/gui/owncloudsetupwizard.h b/src/gui/owncloudsetupwizard.h index c5ad99a2e..d26fb9cdc 100644 --- a/src/gui/owncloudsetupwizard.h +++ b/src/gui/owncloudsetupwizard.h @@ -69,7 +69,7 @@ private slots: void slotDetermineAuthType(const QString&); void slotSystemProxyLookupDone(const QNetworkProxy &proxy); void slotContinueDetermineAuth(); - void slotOwnCloudFoundAuth(const QUrl&, const QVariantMap&); + void slotOwnCloudFoundAuth(const QUrl&, const QJsonObject&); void slotNoOwnCloudFoundAuth(QNetworkReply *reply); void slotNoOwnCloudFoundAuthTimeout(const QUrl&url); diff --git a/src/gui/servernotificationhandler.cpp b/src/gui/servernotificationhandler.cpp index bd91e8a1e..6cb4ff490 100644 --- a/src/gui/servernotificationhandler.cpp +++ b/src/gui/servernotificationhandler.cpp @@ -15,9 +15,11 @@ #include "servernotificationhandler.h" #include "accountstate.h" #include "capabilities.h" -#include "json.h" #include "networkjobs.h" +#include +#include + namespace OCC { @@ -48,14 +50,14 @@ void ServerNotificationHandler::slotFetchNotifications(AccountState *ptr) // if the previous notification job has finished, start next. _notificationJob = new JsonApiJob( ptr->account(), QLatin1String("ocs/v2.php/apps/notifications/api/v1/notifications"), this ); - QObject::connect(_notificationJob.data(), SIGNAL(jsonReceived(QVariantMap, int)), - this, SLOT(slotNotificationsReceived(QVariantMap, int))); + QObject::connect(_notificationJob.data(), SIGNAL(jsonReceived(QJsonDocument, int)), + this, SLOT(slotNotificationsReceived(QJsonDocument, int))); _notificationJob->setProperty("AccountStatePtr", QVariant::fromValue(ptr)); _notificationJob->start(); } -void ServerNotificationHandler::slotNotificationsReceived(const QVariantMap& json, int statusCode) +void ServerNotificationHandler::slotNotificationsReceived(const QJsonDocument& json, int statusCode) { if( statusCode != 200 ) { qDebug() << Q_FUNC_INFO << "Notifications failed with status code " << statusCode; @@ -63,7 +65,7 @@ void ServerNotificationHandler::slotNotificationsReceived(const QVariantMap& jso return; } - auto notifies = json.value("ocs").toMap().value("data").toList(); + auto notifies = json.object().value("ocs").toObject().value("data").toArray(); AccountState* ai = qvariant_cast(sender()->property("AccountStatePtr")); @@ -71,25 +73,25 @@ void ServerNotificationHandler::slotNotificationsReceived(const QVariantMap& jso foreach( auto element, notifies ) { Activity a; - auto json = element.toMap(); + auto json = element.toObject(); a._type = Activity::NotificationType; a._accName = ai->account()->displayName(); - a._id = json.value("notification_id").toLongLong(); + a._id = json.value("notification_id").toInt(); a._subject = json.value("subject").toString(); a._message = json.value("message").toString(); QString s = json.value("link").toString(); if( !s.isEmpty() ) { a._link = QUrl(s); } - a._dateTime = json.value("datetime").toDateTime(); + a._dateTime = QDateTime::fromString(json.value("datetime").toString(), Qt::ISODate); - auto actions = json.value("actions").toList(); + auto actions = json.value("actions").toArray(); foreach( auto action, actions) { - auto actionJson = action.toMap(); + auto actionJson = action.toObject(); ActivityLink al; - al._label = QUrl::fromPercentEncoding(actionJson.value("label").toByteArray()); + al._label = QUrl::fromPercentEncoding(actionJson.value("label").toString().toUtf8()); al._link = actionJson.value("link").toString(); - al._verb = actionJson.value("type").toByteArray(); + al._verb = actionJson.value("type").toString().toUtf8(); al._isPrimary = actionJson.value("primary").toBool(); a._links.append(al); diff --git a/src/gui/servernotificationhandler.h b/src/gui/servernotificationhandler.h index c3d8f185d..8c8fef976 100644 --- a/src/gui/servernotificationhandler.h +++ b/src/gui/servernotificationhandler.h @@ -19,6 +19,8 @@ #include "activitywidget.h" +class QJsonDocument; + namespace OCC { @@ -35,7 +37,7 @@ public slots: void slotFetchNotifications(AccountState *ptr); private slots: - void slotNotificationsReceived(const QVariantMap& json, int statusCode); + void slotNotificationsReceived(const QJsonDocument& json, int statusCode); private: QPointer _notificationJob; diff --git a/src/gui/thumbnailjob.cpp b/src/gui/thumbnailjob.cpp index 5ffe6c291..2f58fcded 100644 --- a/src/gui/thumbnailjob.cpp +++ b/src/gui/thumbnailjob.cpp @@ -15,7 +15,6 @@ #include "thumbnailjob.h" #include "networkjobs.h" #include "account.h" -#include "json.h" namespace OCC { diff --git a/src/libsync/abstractnetworkjob.cpp b/src/libsync/abstractnetworkjob.cpp index 317d3439c..fcb7689dd 100644 --- a/src/libsync/abstractnetworkjob.cpp +++ b/src/libsync/abstractnetworkjob.cpp @@ -27,8 +27,6 @@ #include #include -#include "json.h" - #include "networkjobs.h" #include "account.h" #include "owncloudpropagator.h" diff --git a/src/libsync/connectionvalidator.cpp b/src/libsync/connectionvalidator.cpp index d664354a6..76945baf2 100644 --- a/src/libsync/connectionvalidator.cpp +++ b/src/libsync/connectionvalidator.cpp @@ -107,13 +107,13 @@ void ConnectionValidator::slotCheckServerAndAuth() CheckServerJob *checkJob = new CheckServerJob(_account, this); checkJob->setTimeout(timeoutToUseMsec); checkJob->setIgnoreCredentialFailure(true); - connect(checkJob, SIGNAL(instanceFound(QUrl,QVariantMap)), SLOT(slotStatusFound(QUrl,QVariantMap))); + connect(checkJob, SIGNAL(instanceFound(QUrl,QJsonObject)), SLOT(slotStatusFound(QUrl,QJsonObject))); connect(checkJob, SIGNAL(instanceNotFound(QNetworkReply*)), SLOT(slotNoStatusFound(QNetworkReply*))); connect(checkJob, SIGNAL(timeout(QUrl)), SLOT(slotJobTimeout(QUrl))); checkJob->start(); } -void ConnectionValidator::slotStatusFound(const QUrl&url, const QVariantMap &info) +void ConnectionValidator::slotStatusFound(const QUrl&url, const QJsonObject &info) { // Newer servers don't disclose any version in status.php anymore // https://github.com/owncloud/core/pull/27473/files @@ -223,18 +223,18 @@ void ConnectionValidator::checkServerCapabilities() { JsonApiJob *job = new JsonApiJob(_account, QLatin1String("ocs/v1.php/cloud/capabilities"), this); job->setTimeout(timeoutToUseMsec); - QObject::connect(job, SIGNAL(jsonReceived(QVariantMap, int)), this, SLOT(slotCapabilitiesRecieved(QVariantMap))); + QObject::connect(job, SIGNAL(jsonReceived(QJsonDocument, int)), this, SLOT(slotCapabilitiesRecieved(QJsonDocument))); job->start(); } -void ConnectionValidator::slotCapabilitiesRecieved(const QVariantMap &json) +void ConnectionValidator::slotCapabilitiesRecieved(const QJsonDocument &json) { - auto caps = json.value("ocs").toMap().value("data").toMap().value("capabilities"); + auto caps = json.object().value("ocs").toObject().value("data").toObject().value("capabilities").toObject(); qDebug() << "Server capabilities" << caps; - _account->setCapabilities(caps.toMap()); + _account->setCapabilities(caps.toVariantMap()); // New servers also report the version in the capabilities - QString serverVersion = caps.toMap()["core"].toMap()["status"].toMap()["version"].toString(); + QString serverVersion = caps["core"].toObject()["status"].toObject()["version"].toString(); if (!serverVersion.isEmpty() && !setAndCheckServerVersion(serverVersion)) { return; } @@ -247,7 +247,7 @@ void ConnectionValidator::fetchUser() JsonApiJob *job = new JsonApiJob(_account, QLatin1String("ocs/v1.php/cloud/user"), this); job->setTimeout(timeoutToUseMsec); - QObject::connect(job, SIGNAL(jsonReceived(QVariantMap, int)), this, SLOT(slotUserFetched(QVariantMap))); + QObject::connect(job, SIGNAL(jsonReceived(QJsonDocument, int)), this, SLOT(slotUserFetched(QJsonDocument))); job->start(); } @@ -271,9 +271,9 @@ bool ConnectionValidator::setAndCheckServerVersion(const QString& version) return true; } -void ConnectionValidator::slotUserFetched(const QVariantMap &json) +void ConnectionValidator::slotUserFetched(const QJsonDocument &json) { - QString user = json.value("ocs").toMap().value("data").toMap().value("id").toString(); + QString user = json.object().value("ocs").toObject().value("data").toObject().value("id").toString(); if (!user.isEmpty()) { _account->setDavUser(user); diff --git a/src/libsync/connectionvalidator.h b/src/libsync/connectionvalidator.h index 73dbb37ef..0bebbeb49 100644 --- a/src/libsync/connectionvalidator.h +++ b/src/libsync/connectionvalidator.h @@ -113,15 +113,15 @@ signals: protected slots: void slotCheckServerAndAuth(); - void slotStatusFound(const QUrl&url, const QVariantMap &info); + void slotStatusFound(const QUrl&url, const QJsonObject &info); void slotNoStatusFound(QNetworkReply *reply); void slotJobTimeout(const QUrl& url); void slotAuthFailed(QNetworkReply *reply); void slotAuthSuccess(); - void slotCapabilitiesRecieved(const QVariantMap&); - void slotUserFetched(const QVariantMap &); + void slotCapabilitiesRecieved(const QJsonDocument&); + void slotUserFetched(const QJsonDocument &); void slotAvatarImage(const QImage &img); private: diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp index 08c98ec9a..015bcf2d4 100644 --- a/src/libsync/networkjobs.cpp +++ b/src/libsync/networkjobs.cpp @@ -28,8 +28,8 @@ #include #include #include - -#include "json.h" +#include +#include #include "networkjobs.h" #include "account.h" @@ -397,17 +397,17 @@ void CheckServerJob::onTimedOut() deleteLater(); } -QString CheckServerJob::version(const QVariantMap &info) +QString CheckServerJob::version(const QJsonObject &info) { return info.value(QLatin1String("version")).toString(); } -QString CheckServerJob::versionString(const QVariantMap &info) +QString CheckServerJob::versionString(const QJsonObject &info) { return info.value(QLatin1String("versionstring")).toString(); } -bool CheckServerJob::installed(const QVariantMap &info) +bool CheckServerJob::installed(const QJsonObject &info) { return info.value(QLatin1String("installed")).toBool(); } @@ -461,22 +461,22 @@ bool CheckServerJob::finished() return false; } - bool success = false; QByteArray body = reply()->peek(4*1024); int httpStatus = reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt(); if( body.isEmpty() || httpStatus != 200) { qDebug() << "error: status.php replied " << httpStatus << body; emit instanceNotFound(reply()); } else { - QVariantMap status = QtJson::parse(QString::fromUtf8(body), success).toMap(); + QJsonParseError error; + auto status = QJsonDocument::fromJson(body, &error); // empty or invalid response - if (!success || status.isEmpty()) { - qDebug() << "status.php from server is not valid JSON!" << body << reply()->request().url(); + if (error.error != QJsonParseError::NoError || status.isNull()) { + qDebug() << "status.php from server is not valid JSON!" << body << reply()->request().url() << error.errorString(); } qDebug() << "status.php returns: " << status << " " << reply()->error() << " Reply: " << reply(); - if( status.contains("installed") ) { - emit instanceFound(reply()->url(), status); + if( status.object().contains("installed") ) { + emit instanceFound(reply()->url(), status.object()); } else { qDebug() << "No proper answer on " << reply()->url(); emit instanceNotFound(reply()); @@ -736,7 +736,7 @@ bool JsonApiJob::finished() if (reply()->error() != QNetworkReply::NoError) { qWarning() << "Network error: " << path() << errorString() << reply()->attribute(QNetworkRequest::HttpStatusCodeAttribute); - emit jsonReceived(QVariantMap(), statusCode); + emit jsonReceived(QJsonDocument(), statusCode); return true; } @@ -756,12 +756,12 @@ bool JsonApiJob::finished() } } - bool success = false; - QVariantMap json = QtJson::parse(jsonStr, success).toMap(); + QJsonParseError error; + auto json = QJsonDocument::fromJson(jsonStr.toUtf8(), &error); // empty or invalid response - if (!success || json.isEmpty()) { - qWarning() << "invalid JSON!" << jsonStr; - emit jsonReceived(QVariantMap(), statusCode); + if (error.error != QJsonParseError::NoError || json.isNull()) { + qWarning() << "invalid JSON!" << jsonStr << error.errorString(); + emit jsonReceived(json, statusCode); return true; } diff --git a/src/libsync/networkjobs.h b/src/libsync/networkjobs.h index ce2c62eee..4ddbf83e2 100644 --- a/src/libsync/networkjobs.h +++ b/src/libsync/networkjobs.h @@ -19,6 +19,7 @@ #include "abstractnetworkjob.h" class QUrl; +class QJsonObject; namespace OCC { @@ -227,12 +228,12 @@ public: explicit CheckServerJob(AccountPtr account, QObject *parent = 0); void start() Q_DECL_OVERRIDE; - static QString version(const QVariantMap &info); - static QString versionString(const QVariantMap &info); - static bool installed(const QVariantMap &info); + static QString version(const QJsonObject &info); + static QString versionString(const QJsonObject &info); + static bool installed(const QJsonObject &info); signals: - void instanceFound(const QUrl&url, const QVariantMap &info); + void instanceFound(const QUrl&url, const QJsonObject &info); /** Emitted on invalid status.php reply. * @@ -278,8 +279,8 @@ private slots: * To be used like this: * \code * _job = new JsonApiJob(account, QLatin1String("ocs/v1.php/foo/bar"), this); - * connect(job, SIGNAL(jsonReceived(QVariantMap)), ...) - * The received QVariantMap is empty in case of error or otherwise is a map as parsed by QtJson + * connect(job, SIGNAL(jsonReceived(QJsonDocument)), ...) + * The received QVariantMap is null in case of error * \encode * * @ingroup libsync @@ -309,10 +310,10 @@ signals: /** * @brief jsonReceived - signal to report the json answer from ocs - * @param json - the raw json string + * @param json - the parsed json document * @param statusCode - the OCS status code: 100 (!) for success */ - void jsonReceived(const QVariantMap &json, int statusCode); + void jsonReceived(const QJsonDocument &json, int statusCode); private: QList< QPair > _additionalParams; diff --git a/src/libsync/owncloudpropagator.cpp b/src/libsync/owncloudpropagator.cpp index 99e5ca016..14c8b5edc 100644 --- a/src/libsync/owncloudpropagator.cpp +++ b/src/libsync/owncloudpropagator.cpp @@ -26,7 +26,6 @@ #include "utility.h" #include "account.h" #include "asserts.h" -#include #ifdef Q_OS_WIN #include diff --git a/src/libsync/propagatedownload.cpp b/src/libsync/propagatedownload.cpp index 823c491d9..893f40502 100644 --- a/src/libsync/propagatedownload.cpp +++ b/src/libsync/propagatedownload.cpp @@ -25,7 +25,6 @@ #include "checksums.h" #include "asserts.h" -#include #include #include #include diff --git a/src/libsync/propagateuploadv1.cpp b/src/libsync/propagateuploadv1.cpp index 308294e42..946bdcbbe 100644 --- a/src/libsync/propagateuploadv1.cpp +++ b/src/libsync/propagateuploadv1.cpp @@ -27,7 +27,6 @@ #include "propagateremotedelete.h" #include "asserts.h" -#include #include #include #include