From 3aaaaaf2d0712d83f1f530537dc09e0bfebb4320 Mon Sep 17 00:00:00 2001 From: alex-z Date: Wed, 12 Jan 2022 14:59:22 +0200 Subject: [PATCH] Bugfix. Re-init sharing manager to enable link sharing UI when receiving sharing permissions. Signed-off-by: alex-z --- src/gui/sharedialog.cpp | 37 ++++++++++++++++++++++--------------- src/gui/sharedialog.h | 1 + 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 6ecb579e5..0a8da9aab 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -136,21 +136,7 @@ ShareDialog::ShareDialog(QPointer accountState, connect(job, &PropfindJob::finishedWithError, this, &ShareDialog::slotPropfindError); job->start(); - bool sharingPossible = true; - if (!accountState->account()->capabilities().sharePublicLink()) { - qCWarning(lcSharing) << "Link shares have been disabled"; - sharingPossible = false; - } else if (!(maxSharingPermissions & SharePermissionShare)) { - qCWarning(lcSharing) << "The file cannot be shared because it does not have sharing permission."; - sharingPossible = false; - } - - if (sharingPossible) { - _manager = new ShareManager(accountState->account(), this); - connect(_manager, &ShareManager::sharesFetched, this, &ShareDialog::slotSharesFetched); - connect(_manager, &ShareManager::linkShareCreated, this, &ShareDialog::slotAddLinkShareWidget); - connect(_manager, &ShareManager::linkShareRequiresPassword, this, &ShareDialog::slotLinkShareRequiresPassword); - } + initShareManager(); } ShareLinkWidget *ShareDialog::addLinkShareWidget(const QSharedPointer &linkShare) @@ -319,6 +305,8 @@ void ShareDialog::showSharingUi() _userGroupWidget->getShares(); } + initShareManager(); + if (theme->linkSharing()) { if(_manager) { _manager->fetchShares(_sharePath); @@ -326,6 +314,25 @@ void ShareDialog::showSharingUi() } } +void ShareDialog::initShareManager() +{ + bool sharingPossible = true; + if (!_accountState->account()->capabilities().sharePublicLink()) { + qCWarning(lcSharing) << "Link shares have been disabled"; + sharingPossible = false; + } else if (!(_maxSharingPermissions & SharePermissionShare)) { + qCWarning(lcSharing) << "The file cannot be shared because it does not have sharing permission."; + sharingPossible = false; + } + + if (!_manager && sharingPossible) { + _manager = new ShareManager(_accountState->account(), this); + connect(_manager, &ShareManager::sharesFetched, this, &ShareDialog::slotSharesFetched); + connect(_manager, &ShareManager::linkShareCreated, this, &ShareDialog::slotAddLinkShareWidget); + connect(_manager, &ShareManager::linkShareRequiresPassword, this, &ShareDialog::slotLinkShareRequiresPassword); + } +} + void ShareDialog::slotCreateLinkShare() { if(_manager) { diff --git a/src/gui/sharedialog.h b/src/gui/sharedialog.h index 5e58480e0..b3aa98277 100644 --- a/src/gui/sharedialog.h +++ b/src/gui/sharedialog.h @@ -78,6 +78,7 @@ protected: private: void showSharingUi(); + void initShareManager(); ShareLinkWidget *addLinkShareWidget(const QSharedPointer &linkShare); void initLinkShareWidget(); -- 2.30.2