diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp
index 0f330964..3d9c4b6a 100644
--- a/src/ui/UserProfile.cpp
+++ b/src/ui/UserProfile.cpp
@@ -27,9 +27,22 @@ UserProfile::UserProfile(QString roomid,
, manager(manager_)
, model(parent)
{
- fetchDeviceList(this->userid_);
globalAvatarUrl = "";
+ connect(this,
+ &UserProfile::globalUsernameRetrieved,
+ this,
+ &UserProfile::setGlobalUsername,
+ Qt::QueuedConnection);
+
+ if (isGlobalUserProfile()) {
+ getGlobalProfileData();
+ }
+
+ if (!cache::client() || !cache::client()->isDatabaseReady() ||
+ !ChatPage::instance()->timelineManager())
+ return;
+
connect(cache::client(),
&Cache::verificationStatusChanged,
this,
@@ -53,17 +66,9 @@ UserProfile::UserProfile(QString roomid,
: verification::VERIFIED;
}
deviceList_.reset(deviceList_.deviceList_);
+ emit devicesChanged();
});
-
- connect(this,
- &UserProfile::globalUsernameRetrieved,
- this,
- &UserProfile::setGlobalUsername,
- Qt::QueuedConnection);
-
- if (isGlobalUserProfile()) {
- getGlobalProfileData();
- }
+ fetchDeviceList(this->userid_);
}
QHash<int, QByteArray>
@@ -123,10 +128,7 @@ UserProfile::displayName()
QString
UserProfile::avatarUrl()
{
- return (isGlobalUserProfile() && globalAvatarUrl != "")
- ? globalAvatarUrl
- : cache::avatarUrl(roomid_, userid_);
- ;
+ return isGlobalUserProfile() ? globalAvatarUrl : cache::avatarUrl(roomid_, userid_);
}
bool
@@ -157,6 +159,9 @@ UserProfile::fetchDeviceList(const QString &userID)
{
auto localUser = utils::localUser();
+ if (!cache::client() || !cache::client()->isDatabaseReady())
+ return;
+
cache::client()->query_keys(
userID.toStdString(),
[other_user_id = userID.toStdString(), this](const UserKeyCache &other_user_keys,
@@ -217,6 +222,7 @@ UserProfile::fetchDeviceList(const QString &userID)
}
this->deviceList_.queueReset(std::move(deviceInfo));
+ emit devicesChanged();
});
});
}
|