Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/owncloud/client.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorHannah von Reth <hannah.vonreth@owncloud.com>2022-06-30 16:30:18 +0300
committerHannah von Reth <vonreth@kde.org>2022-06-30 17:42:51 +0300
commitefa21135ad7fa35c8bb5623e906f784296b92035 (patch)
tree2848adea850e4b91749e88e68f466d1c9e0d0cbd /src
parent8472fd0e44fab168d5992e2c3d70ac90b6520809 (diff)
Don't query private links if disabled on the server
Fixes: #8998
Diffstat (limited to 'src')
-rw-r--r--src/gui/sharedialog.cpp7
-rw-r--r--src/gui/socketapi/socketapi.cpp14
-rw-r--r--src/libsync/networkjobs.cpp26
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