summary refs log tree commit diff
path: root/src/timeline/TimelineViewManager.cpp
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2021-12-30 04:54:03 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2021-12-30 04:54:03 +0100
commit9a9dbda571a674ecfbf23533c64ec9cb095479ef (patch)
tree3e4ac7250ec9bedc7285c5aec144eb496a08e62e /src/timeline/TimelineViewManager.cpp
parentConvert blurhash image format on worker thread (diff)
downloadnheko-9a9dbda571a674ecfbf23533c64ec9cb095479ef.tar.xz
Update presence dynamically and reduce allocations
Diffstat (limited to 'src/timeline/TimelineViewManager.cpp')
-rw-r--r--src/timeline/TimelineViewManager.cpp26
1 files changed, 3 insertions, 23 deletions
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<mtx::events::msg::KeyVerificationAccept>(); qRegisterMetaType<mtx::events::msg::KeyVerificationCancel>(); @@ -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<SelfVerificationStatus>( "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;