diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index ffb0beec..41c0b40e 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -22,6 +22,7 @@
#include "TimelineViewManager.h"
#include "Utils.h"
#include "dialogs/RawMessage.h"
+#include <mtx/responses.hpp>
Q_DECLARE_METATYPE(QModelIndex)
@@ -260,6 +261,17 @@ TimelineModel::TimelineModel(TimelineViewManager *manager, QString room_id, QObj
connect(&events, &EventStore::updateFlowEventId, this, [this](std::string event_id) {
this->updateFlowEventId(event_id);
});
+
+ const auto userid = utils::localUser().toStdString();
+ http::client()->get_profile(
+ userid, [this](const mtx::responses::Profile &res, mtx::http::RequestErr err) {
+ if (err) {
+ nhlog::net()->warn("failed to retrieve own profile info");
+ return;
+ }
+
+ globalUsername = QString::fromStdString(res.display_name);
+ });
}
QHash<int, QByteArray>
@@ -801,7 +813,12 @@ TimelineModel::viewDecryptedRawMessage(QString id) const
void
TimelineModel::openUserProfile(QString userid, bool global)
{
- emit openProfile(new UserProfile(global ? "" : room_id_, global ? utils::localUser() : userid, manager_, this));
+ if (global) {
+ emit openProfile(new UserProfile("",utils::localUser(),
+ manager_, this, globalUsername));
+ } else {
+ emit openProfile(new UserProfile(room_id_, userid, manager_, this));
+ }
}
void
diff --git a/src/timeline/TimelineModel.h b/src/timeline/TimelineModel.h
index 51b8049e..e6cb7d3a 100644
--- a/src/timeline/TimelineModel.h
+++ b/src/timeline/TimelineModel.h
@@ -317,6 +317,7 @@ private:
mutable EventStore events;
QString room_id_;
+ QString globalUsername;
bool decryptDescription = true;
bool m_paginationInProgress = false;
diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp
index 4b7f054d..a53d25f4 100644
--- a/src/ui/UserProfile.cpp
+++ b/src/ui/UserProfile.cpp
@@ -12,12 +12,14 @@
UserProfile::UserProfile(QString roomid,
QString userid,
TimelineViewManager *manager_,
- TimelineModel *parent)
+ TimelineModel *parent,
+ QString globalUsername)
: QObject(parent)
, roomid_(roomid)
, userid_(userid)
, manager(manager_)
, model(parent)
+ , globalUsername(globalUsername)
{
fetchDeviceList(this->userid_);
@@ -98,7 +100,7 @@ UserProfile::userid()
QString
UserProfile::displayName()
{
- return cache::displayName(roomid_, userid_);
+ return globalUserProfile() ? globalUsername : cache::displayName(roomid_, userid_);
}
QString
diff --git a/src/ui/UserProfile.h b/src/ui/UserProfile.h
index 4839e0d8..04317766 100644
--- a/src/ui/UserProfile.h
+++ b/src/ui/UserProfile.h
@@ -94,7 +94,8 @@ public:
UserProfile(QString roomid,
QString userid,
TimelineViewManager *manager_,
- TimelineModel *parent = nullptr);
+ TimelineModel *parent = nullptr,
+ QString globalUsername = "");
DeviceInfoModel *deviceList();
@@ -119,11 +120,11 @@ public:
signals:
void userStatusChanged();
-
void usernameEditingChanged();
private:
QString roomid_, userid_;
+ QString globalUsername;
DeviceInfoModel deviceList_;
bool isUserVerified = false;
bool hasMasterKey = false;
|