File indexing completed on 2024-06-02 05:21:54

0001 /*
0002     SPDX-FileCopyrightText: 2016 Stefan Stäglich <sstaeglich@kdemail.net>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "tomboyitemsdownloadjob.h"
0008 #include "debug.h"
0009 #include <Akonadi/NoteUtils>
0010 #include <QJsonArray>
0011 #include <QJsonDocument>
0012 #include <QJsonObject>
0013 
0014 TomboyItemsDownloadJob::TomboyItemsDownloadJob(Akonadi::Collection::Id id, QNetworkAccessManager *manager, QObject *parent)
0015     : TomboyJobBase(manager, parent)
0016     , mCollectionId(id)
0017 {
0018 }
0019 
0020 Akonadi::Item::List TomboyItemsDownloadJob::items() const
0021 {
0022     return mResultItems;
0023 }
0024 
0025 void TomboyItemsDownloadJob::start()
0026 {
0027     // Get all notes
0028     QNetworkRequest request = QNetworkRequest(QUrl(mContentURL));
0029     mReply = mRequestor->get(request, QList<O0RequestParameter>());
0030 
0031     connect(mReply, &QNetworkReply::finished, this, &TomboyItemsDownloadJob::onRequestFinished);
0032     qCDebug(TOMBOYNOTESRESOURCE_LOG) << "TomboyItemsDownloadJob: Start network request";
0033 }
0034 
0035 void TomboyItemsDownloadJob::onRequestFinished()
0036 {
0037     qCDebug(TOMBOYNOTESRESOURCE_LOG) << "TomboyItemsDownloadJob: Network request finished";
0038     checkReplyError();
0039     if (error() != TomboyJobError::NoError) {
0040         setErrorText(mReply->errorString());
0041         emitResult();
0042         return;
0043     }
0044 
0045     // Parse received data as JSON
0046     const QJsonDocument document = QJsonDocument::fromJson(mReply->readAll(), nullptr);
0047 
0048     const QJsonObject jo = document.object();
0049     const QJsonArray notes = jo[QLatin1StringView("notes")].toArray();
0050 
0051     for (const auto &note : notes) {
0052         Akonadi::Item item(Akonadi::NoteUtils::noteMimeType());
0053         item.setRemoteId(note.toObject()[QLatin1StringView("guid")].toString());
0054         mResultItems << item;
0055         qCDebug(TOMBOYNOTESRESOURCE_LOG) << "TomboyItemsDownloadJob: Retrieving note with id" << item.remoteId();
0056     }
0057 
0058     setError(TomboyJobError::NoError);
0059     emitResult();
0060 }
0061 
0062 #include "moc_tomboyitemsdownloadjob.cpp"