summary refs log tree commit diff
path: root/src/ChatPage.cc
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-20 22:32:48 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-20 22:32:48 +0300
commit13e526c27d91c5cfa61ef709b7d1b0e709ba59fb (patch)
tree1b87c3c3894aa0ed71f276838a1d7011d26da5c9 /src/ChatPage.cc
parentMove ctrl-k callback to the MainWindow (diff)
downloadnheko-13e526c27d91c5cfa61ef709b7d1b0e709ba59fb.tar.xz
Retry initial sync (#19)
Diffstat (limited to 'src/ChatPage.cc')
-rw-r--r--src/ChatPage.cc58
1 files changed, 43 insertions, 15 deletions
diff --git a/src/ChatPage.cc b/src/ChatPage.cc

index d8280a4a..cf78d8a1 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc
@@ -29,6 +29,8 @@ #include "StateEvent.h" +constexpr int MAX_INITIAL_SYNC_FAILURES = 5; + namespace events = matrix::events; ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent) @@ -192,6 +194,24 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent) SIGNAL(initialSyncCompleted(const SyncResponse &)), this, SLOT(initialSyncCompleted(const SyncResponse &))); + connect(client_.data(), &MatrixClient::initialSyncFailed, this, [=](const QString &msg) { + initialSyncFailures += 1; + + if (initialSyncFailures >= MAX_INITIAL_SYNC_FAILURES) { + initialSyncFailures = 0; + + deleteConfigs(); + + emit showLoginPage(msg); + emit contentLoaded(); + return; + } + + qWarning() << msg; + qWarning() << "Retrying initial sync"; + + client_->initialSync(); + }); connect(client_.data(), SIGNAL(syncCompleted(const SyncResponse &)), this, @@ -239,7 +259,29 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent) void ChatPage::logout() { - // Delete all config parameters. + deleteConfigs(); + + resetUI(); + + emit close(); +} + +void +ChatPage::resetUI() +{ + room_avatars_.clear(); + room_list_->clear(); + settingsManager_.clear(); + state_manager_.clear(); + top_bar_->reset(); + user_info_widget_->reset(); + view_manager_->clearAll(); + AvatarProvider::clear(); +} + +void +ChatPage::deleteConfigs() +{ QSettings settings; settings.beginGroup("auth"); settings.remove(""); @@ -253,21 +295,7 @@ ChatPage::logout() cache_->deleteData(); - // Clear the environment. - room_list_->clear(); - view_manager_->clearAll(); - - top_bar_->reset(); - user_info_widget_->reset(); client_->reset(); - - state_manager_.clear(); - settingsManager_.clear(); - room_avatars_.clear(); - - AvatarProvider::clear(); - - emit close(); } void