diff --git a/src/timeline/TimelineViewManager.cpp b/src/timeline/TimelineViewManager.cpp
index afd1acb6..227b410f 100644
--- a/src/timeline/TimelineViewManager.cpp
+++ b/src/timeline/TimelineViewManager.cpp
@@ -15,6 +15,7 @@
#include "dialogs/ImageOverlay.h"
#include "emoji/EmojiModel.h"
#include "emoji/Provider.h"
+#include "../ui/UserProfile.h"
Q_DECLARE_METATYPE(mtx::events::collections::TimelineEvents)
@@ -86,6 +87,8 @@ TimelineViewManager::TimelineViewManager(QSharedPointer<UserSettings> userSettin
qmlRegisterType<DelegateChoice>("im.nheko", 1, 0, "DelegateChoice");
qmlRegisterType<DelegateChooser>("im.nheko", 1, 0, "DelegateChooser");
qmlRegisterType<DeviceVerificationFlow>("im.nheko", 1, 0, "DeviceVerificationFlow");
+ qmlRegisterType<UserProfile>("im.nheko",1,0,"UserProfileContent");
+ qRegisterMetaType<DeviceInfo>();
qRegisterMetaType<mtx::events::collections::TimelineEvents>();
qmlRegisterType<emoji::EmojiModel>("im.nheko.EmojiModel", 1, 0, "EmojiModel");
qmlRegisterType<emoji::EmojiProxyModel>("im.nheko.EmojiModel", 1, 0, "EmojiProxyModel");
@@ -467,9 +470,3 @@ TimelineViewManager::startDummyVerification()
{
emit deviceVerificationRequest(new DeviceVerificationFlow(this));
}
-
-void
-TimelineViewManager::startDummyVerification()
-{
- emit deviceVerificationRequest(new DeviceVerificationFlow(this));
-}
diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp
index ac35f1d4..30785699 100644
--- a/src/ui/UserProfile.cpp
+++ b/src/ui/UserProfile.cpp
@@ -1,28 +1,43 @@
#include "UserProfile.h"
#include "Logging.h"
-#include "MatrixClient.h"
#include "Utils.h"
+#include "mtx/responses/crypto.hpp"
+#include <iostream>
UserProfile::UserProfile(QObject *parent)
: QObject(parent)
{}
-QMap<QString, QString>
-UserProfile::getDeviceList()
-{
+QVector<DeviceInfo>
+UserProfile::getDeviceList(){
+ UserProfile::fetchDeviceList(this->userId);
return this->deviceList;
}
+QString
+UserProfile::getUserId (){
+ return this->userId;
+}
+
+void
+UserProfile::setUserId (const QString &user_id){
+ if(this->userId != userId)
+ return;
+ else
+ this->userId = user_id;
+}
+
void
-UserProfile::fetchDeviceList(const QString &userId)
+UserProfile::fetchDeviceList(const QString &userID)
{
auto localUser = utils::localUser();
mtx::requests::QueryKeys req;
- req.device_keys[userId.toStdString()] = {};
+ mtx::responses::QueryKeys res;
+ req.device_keys[userID.toStdString()] = {};
http::client()->query_keys(
req,
- [user_id = userId.toStdString()](const mtx::responses::QueryKeys &res,
+ [user_id = userID.toStdString(),this](const mtx::responses::QueryKeys &res,
mtx::http::RequestErr err) {
if (err) {
nhlog::net()->warn("failed to query device keys: {} {}",
@@ -39,14 +54,18 @@ UserProfile::fetchDeviceList(const QString &userId)
auto devices = res.device_keys.at(user_id);
- std::vector<DeviceInfo> deviceInfo;
+ QVector<DeviceInfo> deviceInfo;
for (const auto &d : devices) {
auto device = d.second;
// TODO: Verify signatures and ignore those that don't pass.
- deviceInfo.emplace_back(DeviceInfo{
- QString::fromStdString(d.first),
- QString::fromStdString(device.unsigned_info.device_display_name)});
+ // std::cout<<d.first<<std::endl;
+ // std::cout<<device.unsigned_info.device_display_name<<std::endl;
+ DeviceInfo newdevice(QString::fromStdString(d.first),QString::fromStdString(device.unsigned_info.device_display_name))
+ newdevice->device_id = QString::fromStdString(d.first);
+ newdevice->display_name = QString::fromStdString(device.unsigned_info.device_display_name)
+
+ deviceInfo.append(std::move(newdevice));
}
std::sort(deviceInfo.begin(),
@@ -54,5 +73,8 @@ UserProfile::fetchDeviceList(const QString &userId)
[](const DeviceInfo &a, const DeviceInfo &b) {
return a.device_id > b.device_id;
});
+
+ this->deviceList = deviceInfo;
+ emit UserProfile::deviceListUpdated();
});
}
diff --git a/src/ui/UserProfile.h b/src/ui/UserProfile.h
index d003e6ca..bbf57c7b 100644
--- a/src/ui/UserProfile.h
+++ b/src/ui/UserProfile.h
@@ -1,29 +1,49 @@
#pragma once
-#include <QMap>
#include <QObject>
#include <QString>
-struct DeviceInfo
+#include "MatrixClient.h"
+
+class DeviceInfo
{
+public:
+ explicit DeviceInfo(QString device_id,QString display_name){
+ this->device_id = device_id;
+ this->display_name = display_name;
+ }
+ ~DeviceInfo() = default;
+ DeviceInfo(const DeviceInfo &device){
+ this->device_id = device.device_id;
+ this->display_name = device.display_name;
+ }
+
QString device_id;
QString display_name;
};
+Q_DECLARE_METATYPE(DeviceInfo);
class UserProfile : public QObject
{
Q_OBJECT
- Q_PROPERTY(QMap deviceList READ getDeviceList NOTIFY DeviceListUpdated)
+ Q_PROPERTY(QVector<DeviceInfo> deviceList READ getDeviceList NOTIFY deviceListUpdated)
+ Q_PROPERTY(QString userId READ getUserId WRITE setUserId)
public:
+ // constructor
explicit UserProfile(QObject *parent = 0);
- QMap<QString, QString> getDeviceList();
+ // getters
+ QVector<DeviceInfo> getDeviceList();
+ QString getUserId();
+ // setters
+ void setUserId(const QString &userId);
Q_INVOKABLE void fetchDeviceList(const QString &userID);
signals:
- void DeviceListUpdated();
+ void deviceListUpdated();
private:
- QMap<QString, QString> deviceList;
+ QVector<DeviceInfo> deviceList;
+ QString userId;
};
\ No newline at end of file
|