diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp index 347d1a14a3..1a834ad3c2 100644 --- a/src/gui/owncloudgui.cpp +++ b/src/gui/owncloudgui.cpp @@ -1118,10 +1118,7 @@ void ownCloudGui::slotShowShareDialog(const QString &sharePath, const QString &l // // The correct value will be found with a propfind from ShareDialog. // (we want to show the dialog directly, not wait for the propfind first) - SharePermissions maxSharingPermissions = - SharePermissionRead - | SharePermissionUpdate | SharePermissionCreate | SharePermissionDelete - | SharePermissionShare; + SharePermissions maxSharingPermissions = static_cast(accountState->account()->capabilities().defaultPermissions()); if (!resharingAllowed) { maxSharingPermissions = SharePermission(0); } diff --git a/src/libsync/capabilities.cpp b/src/libsync/capabilities.cpp index 7a68af71c7..5043171ec5 100644 --- a/src/libsync/capabilities.cpp +++ b/src/libsync/capabilities.cpp @@ -17,6 +17,13 @@ #include #include +namespace { + QString FileSharingKey() + { + return QStringLiteral("files_sharing"); + } +} + namespace OCC { @@ -85,6 +92,11 @@ bool Capabilities::shareResharing() const return _capabilities["files_sharing"].toMap()["resharing"].toBool(); } +int Capabilities::defaultPermissions() const +{ + return _capabilities.value(FileSharingKey()).toMap().value("default_permissions", 1).toInt(); +} + bool Capabilities::notificationsAvailable() const { // We require the OCS style API in 9.x, can't deal with the REST one only found in 8.2 diff --git a/src/libsync/capabilities.h b/src/libsync/capabilities.h index b49008f523..e39ac43a1f 100644 --- a/src/libsync/capabilities.h +++ b/src/libsync/capabilities.h @@ -43,6 +43,10 @@ public: bool sharePublicLinkEnforceExpireDate() const; bool sharePublicLinkMultiple() const; bool shareResharing() const; + + // TODO: return SharePermission + int defaultPermissions() const; + bool chunkingNg() const; QString zsyncSupportedVersion() const;