From 8c5eb2269e43a28237fad8346d5e9d2fced7e86f Mon Sep 17 00:00:00 2001 From: Black Hat Date: Sun, 23 Jun 2019 14:47:10 +0800 Subject: [PATCH] Fix #138. --- src/spectralroom.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/src/spectralroom.h b/src/spectralroom.h index 10a412462..8da631745 100644 --- a/src/spectralroom.h +++ b/src/spectralroom.h @@ -32,6 +32,9 @@ class SpectralRoom : public Room { backgroundChanged) Q_PROPERTY( QString backgroundMediaId READ backgroundMediaId NOTIFY backgroundChanged) + // Q_PROPERTY(QUrl avatarUrl READ avatarUrl NOTIFY avatarChanged) + Q_PROPERTY(QString avatarMediaId READ avatarMediaId NOTIFY avatarChanged + STORED false) public: explicit SpectralRoom(Connection* connection, @@ -90,6 +93,32 @@ class SpectralRoom : public Room { Q_INVOKABLE QUrl urlToMxcUrl(QUrl mxcUrl); + QUrl avatarUrl() const { + if (!Room::avatarUrl().isEmpty()) + return Room::avatarUrl(); + + // Use the first (excluding self) user's avatar for direct chats + const auto dcUsers = directChatUsers(); + for (auto* u : dcUsers) + if (u != localUser()) + return u->avatarUrl(); + + return {}; + } + + QString avatarMediaId() const { + if (!Room::avatarMediaId().isEmpty()) + return Room::avatarMediaId(); + + // Use the first (excluding self) user's avatar for direct chats + const auto dcUsers = directChatUsers(); + for (auto* u : dcUsers) + if (u != localUser()) + return u->avatarMediaId(); + + return {}; + } + QUrl backgroundUrl(); Q_INVOKABLE void setBackgroundUrl(QUrl url); Q_INVOKABLE void clearBackground();