diff --git a/src/gui/accountstate.cpp b/src/gui/accountstate.cpp index 1324fa1dd..e2fb27794 100644 --- a/src/gui/accountstate.cpp +++ b/src/gui/accountstate.cpp @@ -359,12 +359,7 @@ void AccountState::slotConnectionValidatorResult(ConnectionValidator::Status sta return; } - if ((_lastConnectionValidatorStatus == ConnectionValidator::NeedToSignTermsOfService && status == ConnectionValidator::Connected) || - (status == ConnectionValidator::NeedToSignTermsOfService && _lastConnectionValidatorStatus != status)) { - - emit termsOfServiceChanged(_account); - } - + const auto oldConnectionValidatorStatus = _lastConnectionValidatorStatus; _lastConnectionValidatorStatus = status; // Come online gradually from 503, captive portal(redirection) or maintenance mode @@ -449,6 +444,12 @@ void AccountState::slotConnectionValidatorResult(ConnectionValidator::Status sta setState(NeedToSignTermsOfService); break; } + + if ((oldConnectionValidatorStatus == ConnectionValidator::NeedToSignTermsOfService && status == ConnectionValidator::Connected) || + (status == ConnectionValidator::NeedToSignTermsOfService && oldConnectionValidatorStatus != status)) { + + emit termsOfServiceChanged(_account, status == ConnectionValidator::NeedToSignTermsOfService ? AccountState::NeedToSignTermsOfService : AccountState::Connected); + } } void AccountState::slotHandleRemoteWipeCheck() diff --git a/src/gui/accountstate.h b/src/gui/accountstate.h index fb306545c..de4311dbe 100644 --- a/src/gui/accountstate.h +++ b/src/gui/accountstate.h @@ -195,7 +195,7 @@ signals: void hasFetchedNavigationApps(); void statusChanged(); void desktopNotificationsAllowedChanged(); - void termsOfServiceChanged(OCC::AccountPtr account); + void termsOfServiceChanged(OCC::AccountPtr account, AccountState::State state); protected Q_SLOTS: void slotConnectionValidatorResult(OCC::ConnectionValidator::Status status, const QStringList &errors); diff --git a/src/gui/connectionvalidator.cpp b/src/gui/connectionvalidator.cpp index c5ed581db..75cb21762 100644 --- a/src/gui/connectionvalidator.cpp +++ b/src/gui/connectionvalidator.cpp @@ -378,25 +378,29 @@ void TermsOfServiceChecker::start() void TermsOfServiceChecker::slotServerTermsOfServiceRecieved(const QJsonDocument &reply) { - qCDebug(lcConnectionValidator) << "Terms of service status" << reply; + qCInfo(lcConnectionValidator) << "Terms of service status" << reply; if (reply.object().contains("ocs")) { const auto needToSign = !reply.object().value("ocs").toObject().value("data").toObject().value("hasSigned").toBool(false); if (needToSign != _needToSign) { + qCInfo(lcConnectionValidator) << "_needToSign" << (_needToSign ? "need to sign" : "no need to sign"); _needToSign = needToSign; emit needToSignChanged(); } } else if (_needToSign) { _needToSign = false; + qCInfo(lcConnectionValidator) << "_needToSign" << (_needToSign ? "need to sign" : "no need to sign"); emit needToSignChanged(); } + qCInfo(lcConnectionValidator) << "done"; emit done(); } void TermsOfServiceChecker::checkServerTermsOfService() { if (!_account) { + qCInfo(lcConnectionValidator) << "done"; emit done(); } diff --git a/src/gui/owncloudgui.cpp b/src/gui/owncloudgui.cpp index abd1b6ec9..52536d77a 100644 --- a/src/gui/owncloudgui.cpp +++ b/src/gui/owncloudgui.cpp @@ -285,14 +285,17 @@ void ownCloudGui::slotTrayMessageIfServerUnsupported(Account *account) } } -void ownCloudGui::slotNeedToAcceptTermsOfService(OCC::AccountPtr account) +void ownCloudGui::slotNeedToAcceptTermsOfService(OCC::AccountPtr account, + AccountState::State state) { - slotShowTrayMessage( - tr("Terms of service"), - tr("Your account %1 requires you to accept the terms of service of your server. " - "You will be redirected to %2 to acknowledge that you have read it and agrees with it.") - .arg(account->displayName(), account->url().toString())); - QDesktopServices::openUrl(account->url()); + if (state == AccountState::NeedToSignTermsOfService) { + slotShowTrayMessage( + tr("Terms of service"), + tr("Your account %1 requires you to accept the terms of service of your server. " + "You will be redirected to %2 to acknowledge that you have read it and agrees with it.") + .arg(account->displayName(), account->url().toString())); + QDesktopServices::openUrl(account->url()); + } } void ownCloudGui::slotComputeOverallSyncStatus() diff --git a/src/gui/owncloudgui.h b/src/gui/owncloudgui.h index 1cfc44876..2370d9d3f 100644 --- a/src/gui/owncloudgui.h +++ b/src/gui/owncloudgui.h @@ -94,7 +94,8 @@ public slots: void slotOpenPath(const QString &path); void slotAccountStateChanged(); void slotTrayMessageIfServerUnsupported(OCC::Account *account); - void slotNeedToAcceptTermsOfService(OCC::AccountPtr account); + void slotNeedToAcceptTermsOfService(OCC::AccountPtr account, + OCC::AccountState::State state); /** * Open a share dialog for a file or folder.