From 9a9dbda571a674ecfbf23533c64ec9cb095479ef Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Thu, 30 Dec 2021 04:54:03 +0100 Subject: Update presence dynamically and reduce allocations --- src/timeline/TimelineViewManager.cpp | 26 +++----------------------- 1 file changed, 3 insertions(+), 23 deletions(-) (limited to 'src/timeline/TimelineViewManager.cpp') diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp index 70a1510a..bab093b0 100644 --- a/src/timeline/TimelineViewManager.cpp +++ b/src/timeline/TimelineViewManager.cpp @@ -124,29 +124,6 @@ TimelineViewManager::userColor(QString id, QColor background) return userColors.value(idx); } -QString -TimelineViewManager::userPresence(QString id) const -{ - if (id.isEmpty()) - return {}; - else - switch (cache::presenceState(id.toStdString())) { - case mtx::presence::PresenceState::offline: - return QStringLiteral("offline"); - case mtx::presence::PresenceState::unavailable: - return QStringLiteral("unavailable"); - case mtx::presence::PresenceState::online: - default: - return QStringLiteral("online"); - } -} - -QString -TimelineViewManager::userStatus(QString id) const -{ - return QString::fromStdString(cache::statusMessage(id.toStdString())); -} - TimelineViewManager::TimelineViewManager(CallManager *callManager, ChatPage *parent) : QObject(parent) , imgProvider(new MxcImageProvider()) @@ -157,6 +134,7 @@ TimelineViewManager::TimelineViewManager(CallManager *callManager, ChatPage *par , communities_(new CommunitiesModel(this)) , callManager_(callManager) , verificationManager_(new VerificationManager(this)) + , presenceEmitter(new PresenceEmitter(this)) { qRegisterMetaType(); qRegisterMetaType(); @@ -280,6 +258,7 @@ TimelineViewManager::TimelineViewManager(CallManager *callManager, ChatPage *par return new Nheko(); }); qmlRegisterSingletonInstance("im.nheko", 1, 0, "VerificationManager", verificationManager_); + qmlRegisterSingletonInstance("im.nheko", 1, 0, "Presence", presenceEmitter); qmlRegisterSingletonType( "im.nheko", 1, 0, "SelfVerificationStatus", [](QQmlEngine *, QJSEngine *) -> QObject * { auto ptr = new SelfVerificationStatus(); @@ -407,6 +386,7 @@ TimelineViewManager::sync(const mtx::responses::Sync &sync_) { this->rooms_->sync(sync_); this->communities_->sync(sync_); + this->presenceEmitter->sync(sync_.presence); if (isInitialSync_) { this->isInitialSync_ = false; -- cgit 1.5.1