diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-06-30 16:30:18 +0300 |
---|---|---|
committer | Hannah von Reth <vonreth@kde.org> | 2022-06-30 17:42:51 +0300 |
commit | efa21135ad7fa35c8bb5623e906f784296b92035 (patch) | |
tree | 2848adea850e4b91749e88e68f466d1c9e0d0cbd /src | |
parent | 8472fd0e44fab168d5992e2c3d70ac90b6520809 (diff) |
Don't query private links if disabled on the server
Fixes: #8998
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/sharedialog.cpp | 7 | ||||
-rw-r--r-- | src/gui/socketapi/socketapi.cpp | 14 | ||||
-rw-r--r-- | src/libsync/networkjobs.cpp | 26 |
3 files changed, 26 insertions, 21 deletions
diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 5ba8101e8..58f6a06b4 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -131,8 +131,11 @@ ShareDialog::ShareDialog(AccountStatePtr accountState, // Server versions >= 9.1 support the "share-permissions" property // older versions will just return share-permissions: "" auto job = new PropfindJob(accountState->account(), _baseUrl, _sharePath); - job->setProperties({ QByteArrayLiteral("http://open-collaboration-services.org/ns:share-permissions"), - QByteArrayLiteral("http://owncloud.org/ns:privatelink") }); + QList<QByteArray> properties = { QByteArrayLiteral("http://open-collaboration-services.org/ns:share-permissions") }; + if (accountState->account()->capabilities().privateLinkPropertyAvailable()) { + properties.append(QByteArrayLiteral("http://owncloud.org/ns:privatelink")); + } + job->setProperties(properties); job->setTimeout(10s); connect(job, &PropfindJob::result, this, &ShareDialog::slotPropfindReceived); connect(job, &PropfindJob::finishedWithError, this, &ShareDialog::slotPropfindError); diff --git a/src/gui/socketapi/socketapi.cpp b/src/gui/socketapi/socketapi.cpp index e638fbbc1..3321d8951 100644 --- a/src/gui/socketapi/socketapi.cpp +++ b/src/gui/socketapi/socketapi.cpp @@ -938,11 +938,9 @@ void SocketApi::sendSharingContextMenuOptions(const FileData &fileData, SocketLi } } - listener->sendMessage(QStringLiteral("MENU_ITEM:COPY_PRIVATE_LINK") + flagString + tr("Copy private link to clipboard")); - - // Disabled: only providing email option for private links would look odd, - // and the copy option is more general. - //listener->sendMessage(QLatin1String("MENU_ITEM:EMAIL_PRIVATE_LINK") + flagString + tr("Send private link by email...")); + if (capabilities.privateLinkPropertyAvailable()) { + listener->sendMessage(QStringLiteral("MENU_ITEM:COPY_PRIVATE_LINK") + flagString + tr("Copy private link to clipboard")); + } } SocketApi::FileData SocketApi::FileData::get(const QString &localFile) @@ -1022,10 +1020,12 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe if (fileData.folder && fileData.folder->accountState()->isConnected()) { sendSharingContextMenuOptions(fileData, listener); - listener->sendMessage(QLatin1String("MENU_ITEM:OPEN_PRIVATE_LINK") + flagString + tr("Open in browser")); - // Add link to versions pane if possible auto &capabilities = folder->accountState()->account()->capabilities(); + if (capabilities.privateLinkPropertyAvailable()) { + listener->sendMessage(QLatin1String("MENU_ITEM:OPEN_PRIVATE_LINK") + flagString + tr("Open in browser")); + } + // Add link to versions pane if possible if (capabilities.versioningEnabled() && capabilities.privateLinkDetailsParamAvailable() && isOnTheServer diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp index 75728f0c8..d718fdebe 100644 --- a/src/libsync/networkjobs.cpp +++ b/src/libsync/networkjobs.cpp @@ -32,8 +32,8 @@ #include <QPainterPath> #endif -#include "networkjobs.h" #include "account.h" +#include "networkjobs.h" #include "owncloudpropagator.h" #include "creds/abstractcredentials.h" @@ -607,17 +607,19 @@ void SimpleNetworkJob::newReplyHook(QNetworkReply *reply) void fetchPrivateLinkUrl(AccountPtr account, const QUrl &baseUrl, const QString &remotePath, QObject *target, std::function<void(const QString &url)> targetFun) { - // Retrieve the new link by PROPFIND - PropfindJob *job = new PropfindJob(account, baseUrl, remotePath, target); - job->setProperties({ QByteArrayLiteral("http://owncloud.org/ns:privatelink") }); - job->setTimeout(10s); - QObject::connect(job, &PropfindJob::result, target, [=](const QMap<QString, QString> &result) { - auto privateLinkUrl = result[QStringLiteral("privatelink")]; - if (!privateLinkUrl.isEmpty()) { - targetFun(privateLinkUrl); - } - }); - job->start(); + if (account->capabilities().privateLinkPropertyAvailable()) { + // Retrieve the new link by PROPFIND + PropfindJob *job = new PropfindJob(account, baseUrl, remotePath, target); + job->setProperties({ QByteArrayLiteral("http://owncloud.org/ns:privatelink") }); + job->setTimeout(10s); + QObject::connect(job, &PropfindJob::result, target, [=](const QMap<QString, QString> &result) { + auto privateLinkUrl = result[QStringLiteral("privatelink")]; + if (!privateLinkUrl.isEmpty()) { + targetFun(privateLinkUrl); + } + }); + job->start(); + } } } // namespace OCC |