summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-08 21:35:37 +0300
committerKonstantinos Sideris <sideris.konstantin@gmail.com>2017-10-08 21:35:37 +0300
commitebe36b5713c5c85b8b85d1c15653f3f66b342823 (patch)
treee4e2850199f5ce1820f2e4950f5a1dc9f93646f4 /src
parentPrevent FOUC (diff)
downloadnheko-ebe36b5713c5c85b8b85d1c15653f3f66b342823.tar.xz
Drop the loading screen if consensus can't be achieved
Diffstat (limited to 'src')
-rw-r--r--src/ChatPage.cc33
-rw-r--r--src/MatrixClient.cc2
2 files changed, 23 insertions, 12 deletions
diff --git a/src/ChatPage.cc b/src/ChatPage.cc

index d3f60494..5648a830 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc
@@ -33,7 +33,6 @@ namespace events = matrix::events; ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent) : QWidget(parent) - , sync_interval_(2000) , client_(client) { setStyleSheet("background-color: #fff;"); @@ -109,9 +108,9 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent) user_info_widget_ = new UserInfoWidget(sideBarTopWidget_); sideBarTopWidgetLayout_->addWidget(user_info_widget_); - sync_timer_ = new QTimer(this); - sync_timer_->setSingleShot(true); - connect(sync_timer_, SIGNAL(timeout()), this, SLOT(startSync())); + syncTimer_ = new QTimer(this); + syncTimer_->setSingleShot(true); + connect(syncTimer_, SIGNAL(timeout()), this, SLOT(startSync())); connect(user_info_widget_, SIGNAL(logout()), client_.data(), SLOT(logout())); connect(client_.data(), SIGNAL(loggedOut()), this, SLOT(logout())); @@ -213,11 +212,19 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent) this, SLOT(removeRoom(const QString &))); + showContentTimer_ = new QTimer(this); + showContentTimer_->setSingleShot(true); + connect(showContentTimer_, &QTimer::timeout, this, [=]() { + consensusTimer_->stop(); + emit contentLoaded(); + }); + consensusTimer_ = new QTimer(this); connect(consensusTimer_, &QTimer::timeout, this, [=]() { if (view_manager_->hasLoaded()) { // Remove the spinner overlay. emit contentLoaded(); + showContentTimer_->stop(); consensusTimer_->stop(); } }); @@ -228,7 +235,7 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent) void ChatPage::logout() { - sync_timer_->stop(); + syncTimer_->stop(); // Delete all config parameters. QSettings settings; @@ -307,7 +314,7 @@ ChatPage::syncFailed(const QString &msg) return; qWarning() << "Sync error:" << msg; - sync_timer_->start(sync_interval_); + syncTimer_->start(SYNC_INTERVAL); } // TODO: Should be moved in another class that manages this global list. @@ -404,7 +411,7 @@ ChatPage::syncCompleted(const SyncResponse &response) room_list_->sync(state_manager_); view_manager_->sync(response.rooms()); - sync_timer_->start(sync_interval_); + syncTimer_->start(SYNC_INTERVAL); } void @@ -457,7 +464,7 @@ ChatPage::initialSyncCompleted(const SyncResponse &response) // Initialize room list. room_list_->setInitialRooms(settingsManager_, state_manager_); - sync_timer_->start(sync_interval_); + syncTimer_->start(SYNC_INTERVAL); emit contentLoaded(); } @@ -564,9 +571,13 @@ ChatPage::loadStateFromCache() room_list_->setInitialRooms(settingsManager_, state_manager_); // Check periodically if the timelines have been loaded. - consensusTimer_->start(500); + consensusTimer_->start(CONSENSUS_TIMEOUT); + + // Show the content if consensus can't be achieved. + showContentTimer_->start(SHOW_CONTENT_TIMEOUT); - sync_timer_->start(sync_interval_); + // Start receiving events. + syncTimer_->start(SYNC_INTERVAL); } void @@ -665,5 +676,5 @@ ChatPage::updateTypingUsers(const QString &roomid, const QList<QString> &user_id ChatPage::~ChatPage() { - sync_timer_->stop(); + syncTimer_->stop(); } diff --git a/src/MatrixClient.cc b/src/MatrixClient.cc
index 8c10a0a2..708e1176 100644 --- a/src/MatrixClient.cc +++ b/src/MatrixClient.cc
@@ -627,7 +627,7 @@ MatrixClient::sync() noexcept QUrlQuery query; query.addQueryItem("set_presence", "online"); query.addQueryItem("filter", QJsonDocument(filter).toJson(QJsonDocument::Compact)); - query.addQueryItem("timeout", "30000"); + query.addQueryItem("timeout", "15000"); query.addQueryItem("access_token", token_); if (next_batch_.isEmpty()) {