diff options
author | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2018-03-04 14:49:15 +0200 |
---|---|---|
committer | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2018-03-04 14:49:15 +0200 |
commit | 0f62cba49853b644405fadefaf8b87c32bc4b9a1 (patch) | |
tree | 9123367a70913f7849696dcc0a3ae814a2d0c977 /src/ChatPage.cc | |
parent | Bump version (diff) | |
download | nheko-0f62cba49853b644405fadefaf8b87c32bc4b9a1.tar.xz |
Retry initial sync only on specific errors
fixes #233 fixes #89
Diffstat (limited to 'src/ChatPage.cc')
-rw-r--r-- | src/ChatPage.cc | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/ChatPage.cc b/src/ChatPage.cc index 93ae562e..571ac67a 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -361,7 +361,7 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, }); initialSyncTimer_ = new QTimer(this); - connect(initialSyncTimer_, &QTimer::timeout, this, &ChatPage::retryInitialSync); + connect(initialSyncTimer_, &QTimer::timeout, this, [this]() { retryInitialSync(); }); syncTimeoutTimer_ = new QTimer(this); connect(syncTimeoutTimer_, &QTimer::timeout, this, [this]() { @@ -965,19 +965,30 @@ ChatPage::setGroupViewState(bool isEnabled) } void -ChatPage::retryInitialSync() +ChatPage::retryInitialSync(int status_code) { initialSyncTimer_->stop(); if (client_->getHomeServer().isEmpty()) { deleteConfigs(); + resetUI(); + emit showLoginPage("Sync error. Please try again."); return; } - qWarning() << "Retrying initial sync"; + // Retry on Bad-Gateway & Gateway-Timeout errors + if (status_code == -1 || status_code == 504 || status_code == 502 || status_code == 524) { + qWarning() << "retrying initial sync"; - client_->initialSync(); - initialSyncTimer_->start(INITIAL_SYNC_RETRY_TIMEOUT); + client_->initialSync(); + initialSyncTimer_->start(INITIAL_SYNC_RETRY_TIMEOUT); + } else { + // Drop into the login screen. + deleteConfigs(); + resetUI(); + + emit showLoginPage(QString("Sync error %1. Please try again.").arg(status_code)); + } } void |