diff options
author | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-10-21 21:17:01 +0300 |
---|---|---|
committer | Konstantinos Sideris <sideris.konstantin@gmail.com> | 2017-10-21 21:17:01 +0300 |
commit | 160fe1d668d9c1fa8f089cec34df29c2ba31a56f (patch) | |
tree | f0d9fd1aee271afa8e51aea312ad1ec01ff614dc /src/ChatPage.cc | |
parent | Remove ui flickering when adding new timeline events (diff) | |
download | nheko-160fe1d668d9c1fa8f089cec34df29c2ba31a56f.tar.xz |
Remove cache updates from the main thread
Diffstat (limited to 'src/ChatPage.cc')
-rw-r--r-- | src/ChatPage.cc | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/src/ChatPage.cc b/src/ChatPage.cc index 5df8dec2..65fef9de 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -18,6 +18,7 @@ #include <QApplication> #include <QDebug> #include <QSettings> +#include <QtConcurrent> #include "AvatarProvider.h" #include "ChatPage.h" @@ -196,6 +197,11 @@ ChatPage::ChatPage(QSharedPointer<MatrixClient> client, QWidget *parent) this, SLOT(initialSyncCompleted(const SyncResponse &))); connect(client_.data(), &MatrixClient::initialSyncFailed, this, [=](const QString &msg) { + if (client_->getHomeServer().isEmpty()) { + deleteConfigs(); + return; + } + initialSyncFailures += 1; if (initialSyncFailures >= MAX_INITIAL_SYNC_FAILURES) { @@ -426,14 +432,7 @@ ChatPage::syncCompleted(const SyncResponse &response) } } - try { - cache_->setState(response.nextBatch(), state_manager_); - } catch (const lmdb::error &e) { - qCritical() << "The cache couldn't be updated: " << e.what(); - // TODO: Notify the user. - cache_->unmount(); - cache_->deleteData(); - } + QtConcurrent::run(cache_.data(), &Cache::setState, response.nextBatch(), state_manager_); client_->setNextBatchToken(response.nextBatch()); @@ -479,16 +478,10 @@ ChatPage::initialSyncCompleted(const SyncResponse &response) QApplication::processEvents(); } - try { - cache_->setState(response.nextBatch(), state_manager_); - } catch (const lmdb::error &e) { - qCritical() << "The cache couldn't be initialized: " << e.what(); - cache_->unmount(); - cache_->deleteData(); - } - client_->setNextBatchToken(response.nextBatch()); + QtConcurrent::run(cache_.data(), &Cache::setState, response.nextBatch(), state_manager_); + // Populate timelines with messages. view_manager_->initialize(response.rooms()); |