diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp
index a3715fee..715c1c42 100644
--- a/src/ui/UserProfile.cpp
+++ b/src/ui/UserProfile.cpp
@@ -24,6 +24,7 @@ UserProfile::UserProfile(QString roomid,
, model(parent)
{
fetchDeviceList(this->userid_);
+ globalAvatarUrl = "";
connect(cache::client(),
&Cache::verificationStatusChanged,
@@ -56,16 +57,9 @@ UserProfile::UserProfile(QString roomid,
&UserProfile::setGlobalUsername,
Qt::QueuedConnection);
- http::client()->get_profile(
- userid_.toStdString(),
- [this](const mtx::responses::Profile &res, mtx::http::RequestErr err) {
- if (err) {
- nhlog::net()->warn("failed to retrieve own profile info");
- return;
- }
-
- emit globalUsernameRetrieved(QString::fromStdString(res.display_name));
- });
+ if (isGlobalUserProfile()) {
+ getGlobalProfileData();
+ }
}
QHash<int, QByteArray>
@@ -125,7 +119,10 @@ UserProfile::displayName()
QString
UserProfile::avatarUrl()
{
- return cache::avatarUrl(roomid_, userid_);
+ return (isGlobalUserProfile() && globalAvatarUrl != "")
+ ? globalAvatarUrl
+ : cache::avatarUrl(roomid_, userid_);
+ ;
}
bool
@@ -353,6 +350,7 @@ UserProfile::changeAvatar()
isLoading_ = false;
emit loadingChanged();
+ getGlobalProfileData();
});
} else {
// change room username
@@ -393,4 +391,21 @@ bool
UserProfile::isLoading() const
{
return isLoading_;
+}
+
+void
+UserProfile::getGlobalProfileData()
+{
+ http::client()->get_profile(
+ userid_.toStdString(),
+ [this](const mtx::responses::Profile &res, mtx::http::RequestErr err) {
+ if (err) {
+ nhlog::net()->warn("failed to retrieve own profile info");
+ return;
+ }
+
+ emit globalUsernameRetrieved(QString::fromStdString(res.display_name));
+ globalAvatarUrl = QString::fromStdString(res.avatar_url);
+ emit avatarUrlChanged();
+ });
}
\ No newline at end of file
diff --git a/src/ui/UserProfile.h b/src/ui/UserProfile.h
index 58fb0f0b..ffc5dcae 100644
--- a/src/ui/UserProfile.h
+++ b/src/ui/UserProfile.h
@@ -134,10 +134,12 @@ protected slots:
private:
void updateRoomMemberState(mtx::events::state::Member member);
+ void getGlobalProfileData();
private:
QString roomid_, userid_;
QString globalUsername;
+ QString globalAvatarUrl;
DeviceInfoModel deviceList_;
bool isUserVerified = false;
bool hasMasterKey = false;
|