Share link: Fix disabled API/sharing #5778
authorChristian Kamm <mail@ckamm.de>
Thu, 18 May 2017 09:39:13 +0000 (11:39 +0200)
committerMarkus Goetz <markus@woboq.com>
Mon, 22 May 2017 08:59:57 +0000 (10:59 +0200)
* Don't hide the displayed error directly after showing it
* Don't try to fetch shares when sharing isn't possible

src/gui/sharelinkwidget.cpp

index 3988a9a833e3c30827456fba8b7e7ddc0e4fd402..97f1293a19539e40840e74f3c1513f1114129648 100644 (file)
@@ -82,12 +82,17 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
     connect(_ui->calendar, SIGNAL(dateChanged(QDate)), SLOT(slotExpireDateChanged(QDate)));
     connect(_ui->checkBox_editing, SIGNAL(clicked()), this, SLOT(slotCheckBoxEditingClicked()));
 
+    _ui->errorLabel->hide();
+
+    bool sharingPossible = true;
     if (!_account->capabilities().sharePublicLink()) {
         displayError(tr("Link shares have been disabled"));
-        _ui->nameLineEdit->setEnabled(false);
-        _ui->createShareButton->setEnabled(false);
+        sharingPossible = false;
     } else if (!(maxSharingPermissions & SharePermissionShare)) {
         displayError(tr("The file can not be shared because it was shared without sharing permission."));
+        sharingPossible = false;
+    }
+    if (!sharingPossible) {
         _ui->nameLineEdit->setEnabled(false);
         _ui->createShareButton->setEnabled(false);
     }
@@ -122,8 +127,6 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
         return;
     }
 
-    _ui->errorLabel->hide();
-
 
     // Parse capabilities
 
@@ -159,12 +162,13 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account,
     /*
      * Create the share manager and connect it properly
      */
-    _manager = new ShareManager(_account, this);
-
-    connect(_manager, SIGNAL(sharesFetched(QList<QSharedPointer<Share>>)), SLOT(slotSharesFetched(QList<QSharedPointer<Share>>)));
-    connect(_manager, SIGNAL(linkShareCreated(QSharedPointer<LinkShare>)), SLOT(slotCreateShareFetched(const QSharedPointer<LinkShare>)));
-    connect(_manager, SIGNAL(linkShareRequiresPassword(QString)), SLOT(slotCreateShareRequiresPassword(QString)));
-    connect(_manager, SIGNAL(serverError(int, QString)), SLOT(slotServerError(int, QString)));
+    if (sharingPossible) {
+        _manager = new ShareManager(_account, this);
+        connect(_manager, SIGNAL(sharesFetched(QList<QSharedPointer<Share>>)), SLOT(slotSharesFetched(QList<QSharedPointer<Share>>)));
+        connect(_manager, SIGNAL(linkShareCreated(QSharedPointer<LinkShare>)), SLOT(slotCreateShareFetched(const QSharedPointer<LinkShare>)));
+        connect(_manager, SIGNAL(linkShareRequiresPassword(QString)), SLOT(slotCreateShareRequiresPassword(QString)));
+        connect(_manager, SIGNAL(serverError(int, QString)), SLOT(slotServerError(int, QString)));
+    }
 }
 
 ShareLinkWidget::~ShareLinkWidget()
@@ -174,7 +178,9 @@ ShareLinkWidget::~ShareLinkWidget()
 
 void ShareLinkWidget::getShares()
 {
-    _manager->fetchShares(_sharePath);
+    if (_manager) {
+        _manager->fetchShares(_sharePath);
+    }
 }
 
 void ShareLinkWidget::slotSharesFetched(const QList<QSharedPointer<Share>> &shares)
@@ -346,6 +352,9 @@ void ShareLinkWidget::slotExpireDateChanged(const QDate &date)
 
 void ShareLinkWidget::slotPasswordReturnPressed()
 {
+    if (!_manager) {
+        return;
+    }
     if (!selectedShare()) {
         // If share creation requires a password, we'll be in this case
         if (_ui->lineEdit_password->text().isEmpty()) {
@@ -409,6 +418,9 @@ void ShareLinkWidget::slotPasswordSet()
 
 void ShareLinkWidget::slotShareNameEntered()
 {
+    if (!_manager) {
+        return;
+    }
     _pi_create->startAnimation();
     _manager->createLinkShare(_sharePath, _ui->nameLineEdit->text(), QString());
 }