Bugfix. Re-init sharing manager to enable link sharing UI when receiving sharing...
authoralex-z <blackslayer4@gmail.com>
Wed, 12 Jan 2022 12:59:22 +0000 (14:59 +0200)
committeralex-z <blackslayer4@gmail.com>
Thu, 13 Jan 2022 08:42:48 +0000 (10:42 +0200)
Signed-off-by: alex-z <blackslayer4@gmail.com>
src/gui/sharedialog.cpp
src/gui/sharedialog.h

index 6ecb579e595c3cedfd868a76879b55b0814c7da7..0a8da9aab7f03b31e946d14495071ca2242352ab 100644 (file)
@@ -136,21 +136,7 @@ ShareDialog::ShareDialog(QPointer<AccountState> 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> &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) {
index 5e58480e041db003bde269941e778df7697496e8..b3aa9827721fdbce7cea223d68fc7b0aa978b06c 100644 (file)
@@ -78,6 +78,7 @@ protected:
 
 private:
     void showSharingUi();
+    void initShareManager();
     ShareLinkWidget *addLinkShareWidget(const QSharedPointer<LinkShare> &linkShare);
     void initLinkShareWidget();