From: Christian Kamm Date: Thu, 18 May 2017 09:39:13 +0000 (+0200) Subject: Share link: Fix disabled API/sharing #5778 X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~714 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=ddd584077c473c4bad3d23d0b80d988a2b9e5db0;p=nextcloud-desktop.git Share link: Fix disabled API/sharing #5778 * Don't hide the displayed error directly after showing it * Don't try to fetch shares when sharing isn't possible --- diff --git a/src/gui/sharelinkwidget.cpp b/src/gui/sharelinkwidget.cpp index 3988a9a83..97f1293a1 100644 --- a/src/gui/sharelinkwidget.cpp +++ b/src/gui/sharelinkwidget.cpp @@ -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>)), SLOT(slotSharesFetched(QList>))); - connect(_manager, SIGNAL(linkShareCreated(QSharedPointer)), SLOT(slotCreateShareFetched(const QSharedPointer))); - 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>)), SLOT(slotSharesFetched(QList>))); + connect(_manager, SIGNAL(linkShareCreated(QSharedPointer)), SLOT(slotCreateShareFetched(const QSharedPointer))); + 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> &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()); }