From 01ec4d87b2e28de5eb3c23ec469c6c746f573520 Mon Sep 17 00:00:00 2001
From: David Barchiesi <david@barchie.si>
Date: Sun, 19 May 2019 12:38:24 +0200
Subject: Adapt to LibKGAPI setFields() changes.

Summary:
In the next release, LibKGAPI has changed the way it sets fields in `FileFetchJob` and in general allows setting response fields for all `Job`s (see [[ https://phabricator.kde.org/D20886 | D20886 Add fields standard query parameter to Job and use it in FileFetchJob ]]).

This patch adjusts KIO Gdrive to this change and limits the response in `AboutFetchJob`s.

Reviewers: dvratil, elvisangelaccio

Subscribers: #libkgapi, #kio_gdrive

Tags: #kio_gdrive, #libkgapi

Differential Revision: https://phabricator.kde.org/D20888
---
 CMakeLists.txt     |  2 +-
 src/kio_gdrive.cpp | 30 ++++++++++++++++++------------
 2 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index a830925..680ae3e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -5,7 +5,7 @@ project(kio-gdrive VERSION ${GDRIVE_VERSION})
 
 set(QT_MIN_VERSION 5.2.0)
 set(KF5_MIN_VERSION 5.14.0)
-set(KGAPI_MIN_VERSION 5.5.0)
+set(KGAPI_MIN_VERSION 5.11.41)
 set(KACCOUNTS_MIN_VERSION 17.04.0)
 set(QTKEYCHAIN_MIN_VERSION 0.6.0)
 
diff --git a/src/kio_gdrive.cpp b/src/kio_gdrive.cpp
index 9ab146f..e01fef6 100644
--- a/src/kio_gdrive.cpp
+++ b/src/kio_gdrive.cpp
@@ -146,6 +146,12 @@ void KIOGDrive::fileSystemFreeSpace(const QUrl &url)
     }
     if (!gdriveUrl.isRoot()) {
         AboutFetchJob aboutFetch(getAccount(accountId));
+        aboutFetch.setFields({
+            About::Fields::Kind,
+            About::Fields::QuotaBytesTotal,
+            About::Fields::QuotaBytesUsedAggregate,
+            About::Fields::CanCreateTeamDrives,
+        });
         if (runJob(aboutFetch, url, accountId)) {
             const AboutPtr about = aboutFetch.aboutData();
             if (about) {
@@ -379,7 +385,7 @@ QString KIOGDrive::resolveFileIdFromPath(const QString &path, PathFlags flags)
 
     const QString accountId = gdriveUrl.account();
     FileFetchJob fetchJob(query, getAccount(accountId));
-    fetchJob.setFields(FileFetchJob::Id | FileFetchJob::Title | FileFetchJob::Labels);
+    fetchJob.setFields({File::Fields::Id, File::Fields::Title, File::Fields::Labels});
     if (!runJob(fetchJob, url, accountId)) {
         return QString();
     }
@@ -404,6 +410,7 @@ QString KIOGDrive::rootFolderId(const QString &accountId)
     auto it = m_rootIds.constFind(accountId);
     if (it == m_rootIds.cend()) {
         AboutFetchJob aboutFetch(getAccount(accountId));
+        aboutFetch.setFields({About::Fields::Kind, About::Fields::RootFolderId});
         QUrl url;
         if (!runJob(aboutFetch, url, accountId)) {
             return QString();
@@ -455,10 +462,13 @@ void KIOGDrive::listDir(const QUrl &url)
     query.addQuery(FileSearchQuery::Trashed, FileSearchQuery::Equals, false);
     query.addQuery(FileSearchQuery::Parents, FileSearchQuery::In, folderId);
     FileFetchJob fileFetchJob(query, getAccount(accountId));
-    fileFetchJob.setFields((FileFetchJob::BasicFields & ~FileFetchJob::Permissions)
-                            | FileFetchJob::Labels
-                            | FileFetchJob::ExportLinks
-                            | FileFetchJob::LastViewedByMeDate);
+    const auto extraFields =
+        KGAPI2::Drive::FileFetchJob::FieldShorthands::BasicFields +
+            QStringList({ KGAPI2::Drive::File::Fields::Labels,
+                          KGAPI2::Drive::File::Fields::ExportLinks,
+                          KGAPI2::Drive::File::Fields::LastViewedByMeDate,
+            });
+    fileFetchJob.setFields(KGAPI2::Drive::FileFetchJob::FieldShorthands::BasicFields + extraFields);
     runJob(fileFetchJob, url, accountId);
 
     ObjectsList objects = fileFetchJob.items();
@@ -607,10 +617,7 @@ void KIOGDrive::get(const QUrl &url)
     }
 
     FileFetchJob fileFetchJob(fileId, getAccount(accountId));
-    fileFetchJob.setFields(FileFetchJob::Id
-                            | FileFetchJob::MimeType
-                            | FileFetchJob::ExportLinks
-                            | FileFetchJob::DownloadUrl);
+    fileFetchJob.setFields({File::Fields::Id, File::Fields::MimeType, File::Fields::ExportLinks, File::Fields::DownloadUrl});
     runJob(fileFetchJob, url, accountId);
 
     const ObjectsList objects = fileFetchJob.items();
@@ -866,8 +873,7 @@ void KIOGDrive::copy(const QUrl &src, const QUrl &dest, int permissions, KIO::Jo
         return;
     }
     FileFetchJob sourceFileFetchJob(sourceFileId, getAccount(sourceAccountId));
-    sourceFileFetchJob.setFields(FileFetchJob::Id | FileFetchJob::ModifiedDate |
-                                 FileFetchJob::LastViewedByMeDate | FileFetchJob::Description);
+    sourceFileFetchJob.setFields({File::Fields::Id, File::Fields::ModifiedDate, File::Fields::LastViewedByMeDate, File::Fields::Description});
     runJob(sourceFileFetchJob, src, sourceAccountId);
 
     const ObjectsList objects = sourceFileFetchJob.items();
@@ -1086,7 +1092,7 @@ void KIOGDrive::mimetype(const QUrl &url)
     const QString accountId = GDriveUrl(url).account();
 
     FileFetchJob fileFetchJob(fileId, getAccount(accountId));
-    fileFetchJob.setFields(FileFetchJob::Id | FileFetchJob::MimeType);
+    fileFetchJob.setFields({File::Fields::Id, File::Fields::MimeType});
     runJob(fileFetchJob, url, accountId);
 
     const ObjectsList objects = fileFetchJob.items();
-- 
cgit v1.1
