summaryrefslogtreecommitdiff
path: root/kde-misc/kio-gdrive/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2019-08-18 18:16:17 +0100
committerV3n3RiX <venerix@redcorelinux.org>2019-08-18 18:16:17 +0100
commitfc637fb28da700da71ec2064d65ca5a7a31b9c6c (patch)
tree326613a08f25851c388715e205576a2e7d25dc4f /kde-misc/kio-gdrive/files
parentb24bd25253fe093f722ab576d29fdc41d04cb1ee (diff)
gentoo resync : 18.08.2019
Diffstat (limited to 'kde-misc/kio-gdrive/files')
-rw-r--r--kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-1.patch120
-rw-r--r--kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-2.patch42
-rw-r--r--kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-refresh-credentials.patch101
3 files changed, 263 insertions, 0 deletions
diff --git a/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-1.patch b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-1.patch
new file mode 100644
index 000000000000..03352081b73f
--- /dev/null
+++ b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-1.patch
@@ -0,0 +1,120 @@
+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
diff --git a/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-2.patch b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-2.patch
new file mode 100644
index 000000000000..65d181ca7a5f
--- /dev/null
+++ b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-libkgapi-19.08-2.patch
@@ -0,0 +1,42 @@
+From f81aed7bd13fd1d7fcd1f37baade3f1f6f34c54d Mon Sep 17 00:00:00 2001
+From: David Barchiesi <david@barchie.si>
+Date: Wed, 3 Jul 2019 20:18:59 +0200
+Subject: Remove useless FileFetchJob field specifications. Fixes D21838
+ related issues.
+
+---
+ src/kio_gdrive.cpp | 12 +++++-------
+ 1 file changed, 5 insertions(+), 7 deletions(-)
+
+diff --git a/src/kio_gdrive.cpp b/src/kio_gdrive.cpp
+index 4d80baf..5add144 100644
+--- a/src/kio_gdrive.cpp
++++ b/src/kio_gdrive.cpp
+@@ -149,8 +149,7 @@ void KIOGDrive::fileSystemFreeSpace(const QUrl &url)
+ aboutFetch.setFields({
+ About::Fields::Kind,
+ About::Fields::QuotaBytesTotal,
+- About::Fields::QuotaBytesUsedAggregate,
+- About::Fields::CanCreateTeamDrives,
++ About::Fields::QuotaBytesUsedAggregate
+ });
+ if (runJob(aboutFetch, url, accountId)) {
+ const AboutPtr about = aboutFetch.aboutData();
+@@ -462,11 +461,10 @@ void KIOGDrive::listDir(const QUrl &url)
+ query.addQuery(FileSearchQuery::Parents, FileSearchQuery::In, folderId);
+ FileFetchJob fileFetchJob(query, getAccount(accountId));
+ const auto extraFields =
+- KGAPI2::Drive::FileFetchJob::FieldShorthands::BasicFields +
+- QStringList({ KGAPI2::Drive::File::Fields::Labels,
+- KGAPI2::Drive::File::Fields::ExportLinks,
+- KGAPI2::Drive::File::Fields::LastViewedByMeDate,
+- });
++ 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);
+
+--
+cgit v1.1
diff --git a/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-refresh-credentials.patch b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-refresh-credentials.patch
new file mode 100644
index 000000000000..2d5958827866
--- /dev/null
+++ b/kde-misc/kio-gdrive/files/kio-gdrive-1.2.6-refresh-credentials.patch
@@ -0,0 +1,101 @@
+From 4ded388b2b2672f5f7fb953a0150a69fcfaa7cb0 Mon Sep 17 00:00:00 2001
+From: David Barchiesi <david@barchie.si>
+Date: Mon, 8 Jul 2019 09:54:08 +0200
+Subject: Re get Google credentials from KAccounts when a refresh is needed.
+
+Summary: Currently, when the Google access token in use expires, the KIO slave silently ignores refreshing the token (only 'not implemented' gets logged) and fails all subsequent api requests. This patch prevents the slave from breaking by requesting new credentials from KAccounts.
+
+Test Plan: Open a Google Drive folder in Dolphin, wait until accounts token needs a refresh, open another Google Drive folder. The folder loads because a new access token was requested.
+
+Reviewers: elvisangelaccio
+
+Reviewed By: elvisangelaccio
+
+Subscribers: mck182, elvisangelaccio
+
+Differential Revision: https://phabricator.kde.org/D22009
+---
+ src/kaccountsmanager.cpp | 45 ++++++++++++++++++++++++++++++++-------------
+ src/kaccountsmanager.h | 2 ++
+ 2 files changed, 34 insertions(+), 13 deletions(-)
+
+diff --git a/src/kaccountsmanager.cpp b/src/kaccountsmanager.cpp
+index 08272df..dc35852 100644
+--- a/src/kaccountsmanager.cpp
++++ b/src/kaccountsmanager.cpp
+@@ -85,8 +85,19 @@ AccountPtr KAccountsManager::createAccount()
+
+ AccountPtr KAccountsManager::refreshAccount(const AccountPtr &account)
+ {
+- Q_UNUSED(account)
+- qCWarning(GDRIVE) << Q_FUNC_INFO << "not implemented.";
++ const QString accountName = account->accountName();
++ for (auto it = m_accounts.constBegin(); it != m_accounts.constEnd(); ++it) {
++ if (it.value()->accountName() != accountName) {
++ continue;
++ }
++
++ const auto id = it.key();
++ qCDebug(GDRIVE) << "Refreshing" << accountName;
++ auto gapiAccount = getAccountCredentials(id, accountName);
++ m_accounts.insert(id, gapiAccount);
++ return gapiAccount;
++ }
++
+ return {};
+ }
+
+@@ -143,19 +154,27 @@ void KAccountsManager::loadAccounts()
+ }
+ qCDebug(GDRIVE) << account->displayName() << "supports gdrive!";
+
+- auto job = new GetCredentialsJob(id, nullptr);
+- job->exec();
++ auto gapiAccount = getAccountCredentials(id, account->displayName());
++ m_accounts.insert(id, gapiAccount);
++ }
++ }
++}
+
+- auto gapiAccount = AccountPtr(new Account(account->displayName(),
+- job->credentialsData().value(QStringLiteral("AccessToken")).toString(),
+- job->credentialsData().value(QStringLiteral("RefreshToken")).toString()));
++AccountPtr KAccountsManager::getAccountCredentials(Accounts::AccountId id, const QString& displayName)
++{
++ auto job = new GetCredentialsJob(id, nullptr);
++ job->exec();
+
+- const auto scopes = job->credentialsData().value(QStringLiteral("Scope")).toStringList();
+- for (const auto &scope : scopes) {
+- gapiAccount->addScope(QUrl::fromUserInput(scope));
+- }
++ auto gapiAccount = AccountPtr(new Account(displayName,
++ job->credentialsData().value(QStringLiteral("AccessToken")).toString(),
++ job->credentialsData().value(QStringLiteral("RefreshToken")).toString()));
+
+- m_accounts.insert(id, gapiAccount);
+- }
++ const auto scopes = job->credentialsData().value(QStringLiteral("Scope")).toStringList();
++ for (const auto &scope : scopes) {
++ gapiAccount->addScope(QUrl::fromUserInput(scope));
+ }
++
++ qCDebug(GDRIVE) << "Got account credentials for:" << gapiAccount->accountName() << ", accessToken:" << gapiAccount->accessToken() << ", refreshToken:" << gapiAccount->refreshToken();
++
++ return gapiAccount;
+ }
+diff --git a/src/kaccountsmanager.h b/src/kaccountsmanager.h
+index 235d11a..d2dbc43 100644
+--- a/src/kaccountsmanager.h
++++ b/src/kaccountsmanager.h
+@@ -40,6 +40,8 @@ public:
+ private:
+ void loadAccounts();
+
++ KGAPI2::AccountPtr getAccountCredentials(Accounts::AccountId id, const QString& displayName);
++
+ QMap<Accounts::AccountId, KGAPI2::AccountPtr> m_accounts;
+ };
+
+--
+cgit v1.1