diff --git a/src/gui/accountstate.cpp b/src/gui/accountstate.cpp index 7d44691d0c143..36cfce37ad561 100644 --- a/src/gui/accountstate.cpp +++ b/src/gui/accountstate.cpp @@ -117,7 +117,6 @@ void AccountState::setState(State state) if (_state == SignedOut) { _connectionStatus = ConnectionValidator::Undefined; - _connectionErrors.clear(); } else if (oldState == SignedOut && _state == Disconnected) { // If we stop being voluntarily signed-out, try to connect and // auth right now! @@ -297,8 +296,9 @@ void AccountState::checkConnectivity() return; } - auto *conValidator = new ConnectionValidator(AccountStatePtr(this)); + auto *conValidator = new ConnectionValidator(AccountStatePtr(this), _connectionErrors); _connectionValidator = conValidator; + _connectionErrors.clear(); connect(conValidator, &ConnectionValidator::connectionResult, this, &AccountState::slotConnectionValidatorResult); if (isConnected()) { diff --git a/src/gui/connectionvalidator.cpp b/src/gui/connectionvalidator.cpp index 0be46b9f9160d..e39d523a48bd0 100644 --- a/src/gui/connectionvalidator.cpp +++ b/src/gui/connectionvalidator.cpp @@ -37,8 +37,9 @@ Q_LOGGING_CATEGORY(lcConnectionValidator, "nextcloud.sync.connectionvalidator", // This makes sure we get tried often enough without "ConnectionValidator already running" static qint64 timeoutToUseMsec = qMax(1000, ConnectionValidator::DefaultCallingIntervalMsec - 5 * 1000); -ConnectionValidator::ConnectionValidator(AccountStatePtr accountState, QObject *parent) +ConnectionValidator::ConnectionValidator(AccountStatePtr accountState, const QStringList &previousErrors, QObject *parent) : QObject(parent) + , _previousErrors(previousErrors) , _accountState(accountState) , _account(accountState->account()) { @@ -331,7 +332,7 @@ void ConnectionValidator::reportResult(Status status) emit connectionResult(status, _errors); // notify user of errors - if (!_errors.isEmpty()) { + if (!_errors.isEmpty() && _previousErrors != _errors) { showSystrayErrorMessage(); } diff --git a/src/gui/connectionvalidator.h b/src/gui/connectionvalidator.h index 22f8ce686e1b1..4b7193b0c8004 100644 --- a/src/gui/connectionvalidator.h +++ b/src/gui/connectionvalidator.h @@ -79,7 +79,9 @@ class ConnectionValidator : public QObject { Q_OBJECT public: - explicit ConnectionValidator(AccountStatePtr accountState, QObject *parent = nullptr); + explicit ConnectionValidator(AccountStatePtr accountState, + const QStringList &previousErrors, + QObject *parent = nullptr); enum Status { Undefined, @@ -142,6 +144,7 @@ protected slots: */ bool setAndCheckServerVersion(const QString &version); + const QStringList _previousErrors; QStringList _errors; AccountStatePtr _accountState; AccountPtr _account;