summary refs log tree commit diff
path: root/src/UsersModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/UsersModel.cpp31
1 files changed, 25 insertions, 6 deletions
diff --git a/src/UsersModel.cpp b/src/UsersModel.cpp

index 0399bde6..5dc3b3f1 100644 --- a/src/UsersModel.cpp +++ b/src/UsersModel.cpp
@@ -9,6 +9,7 @@ #include <QUrl> #include "Cache.h" +#include "Cache_p.h" #include "CompletionModelRoles.h" #include "UserSettingsPage.h" @@ -16,10 +17,29 @@ UsersModel::UsersModel(const std::string &roomId, QObject *parent) : QAbstractListModel(parent) , room_id(roomId) { - roomMembers_ = cache::roomMembers(roomId); - for (const auto &m : roomMembers_) { - displayNames.push_back(QString::fromStdString(cache::displayName(room_id, m))); - userids.push_back(QString::fromStdString(m)); + // obviously, "friends" isn't a room, but I felt this was the least invasive way + if (roomId == "friends") { + auto e = cache::client()->getAccountData(mtx::events::EventType::Direct); + if (e) { + if (auto event = + std::get_if<mtx::events::AccountDataEvent<mtx::events::account_data::Direct>>( + &e.value())) { + for (const auto &[userId, roomIds] : event->content.user_to_rooms) { + displayNames.push_back( + QString::fromStdString(cache::displayName(roomIds[0], userId))); + userids.push_back(QString::fromStdString(userId)); + avatarUrls.push_back(cache::avatarUrl(QString::fromStdString(roomIds[0]), + QString::fromStdString(userId))); + } + } + } + } else { + for (const auto &m : cache::roomMembers(roomId)) { + displayNames.push_back(QString::fromStdString(cache::displayName(room_id, m))); + userids.push_back(QString::fromStdString(m)); + avatarUrls.push_back( + cache::avatarUrl(QString::fromStdString(room_id), QString::fromStdString(m))); + } } } @@ -59,8 +79,7 @@ UsersModel::data(const QModelIndex &index, int role) const case CompletionModel::SearchRole2: return userids[index.row()]; case Roles::AvatarUrl: - return cache::avatarUrl(QString::fromStdString(room_id), - QString::fromStdString(roomMembers_[index.row()])); + return avatarUrls[index.row()]; case Roles::UserID: return userids[index.row()].toHtmlEscaped(); }