aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCarl Schwan <carl@carlschwan.eu>2021-04-26 17:52:49 +0200
committerCarl Schwan <carl@carlschwan.eu>2021-04-26 17:52:49 +0200
commitae85fd8602cefd1b71db8cb173ed77a873dbe223 (patch)
treebb2e04058f1b6c7efeaf20d98eeeee80f5e95e25 /lib
parentfd84529d1611a8b50440e08ee2af3897f1d1fb3c (diff)
downloadlibquotient-ae85fd8602cefd1b71db8cb173ed77a873dbe223.tar.gz
libquotient-ae85fd8602cefd1b71db8cb173ed77a873dbe223.zip
Make it possible to load the user metadata
In the normal case there is always a room that is associated with an user. So it is in most of the cases, possible to load the metadata (display name and avatar url) with the help of the room. In some cases, it is not possible. For example, when opening an user matrix link pointing to an user and not to a room. In this case, we need to load the metadata independly of the room, since the user is not linked to a room.
Diffstat (limited to 'lib')
-rw-r--r--lib/user.cpp19
-rw-r--r--lib/user.h4
2 files changed, 16 insertions, 7 deletions
diff --git a/lib/user.cpp b/lib/user.cpp
index c4c4fec8..7933c5d9 100644
--- a/lib/user.cpp
+++ b/lib/user.cpp
@@ -51,13 +51,7 @@ User::User(QString userId, Connection* connection)
setObjectName(id());
if (connection->userId() == id()) {
// Load profile information for local user.
- auto *profileJob = connection->callApi<GetUserProfileJob>(id());
- connect(profileJob, &BaseJob::result, this, [this, profileJob] {
- d->defaultName = profileJob->displayname();
- d->defaultAvatar = Avatar(QUrl(profileJob->avatarUrl()));
- emit defaultNameChanged();
- emit defaultAvatarChanged();
- });
+ load();
}
}
@@ -69,6 +63,17 @@ Connection* User::connection() const
User::~User() = default;
+void User::load()
+{
+ auto *profileJob = connection()->callApi<GetUserProfileJob>(id());
+ connect(profileJob, &BaseJob::result, this, [this, profileJob] {
+ d->defaultName = profileJob->displayname();
+ d->defaultAvatar = Avatar(QUrl(profileJob->avatarUrl()));
+ emit defaultNameChanged();
+ emit defaultAvatarChanged();
+ });
+}
+
QString User::id() const { return d->id; }
bool User::isGuest() const
diff --git a/lib/user.h b/lib/user.h
index d0926189..e4560843 100644
--- a/lib/user.h
+++ b/lib/user.h
@@ -130,6 +130,10 @@ public Q_SLOTS:
void unmarkIgnore();
/// Check whether the user is in ignore list
bool isIgnored() const;
+ /// Force loading displayName and avartar url. This is required in
+ /// some cases where the you need to use an user independent of the
+ /// room.
+ void load();
Q_SIGNALS:
void defaultNameChanged();