diff options
author | Thulinma <jaron@vietors.com> | 2021-09-19 22:55:12 +0200 |
---|---|---|
committer | Thulinma <jaron@vietors.com> | 2021-10-06 22:52:19 +0200 |
commit | 456a41bcdf9c0bff99a20bb77d1039c89f2101eb (patch) | |
tree | 7fda457fa164998d60a745ac2172da702b66ff6f /src | |
parent | Fix appimage builder url (diff) | |
download | nheko-456a41bcdf9c0bff99a20bb77d1039c89f2101eb.tar.xz |
Added support for refreshing the device list, marking current device with a checkmark instead of a lock
Diffstat (limited to 'src')
-rw-r--r-- | src/Cache.cpp | 10 | ||||
-rw-r--r-- | src/Cache_p.h | 1 | ||||
-rw-r--r-- | src/ui/UserProfile.cpp | 12 | ||||
-rw-r--r-- | src/ui/UserProfile.h | 2 |
4 files changed, 25 insertions, 0 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp index b124fe5e..ee0ca0c2 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp @@ -4046,6 +4046,16 @@ Cache::updateUserKeys(const std::string &sync_token, const mtx::responses::Query } void +Cache::markUserKeysOutOfDate(const std::vector<std::string> &user_ids) +{ + auto currentBatchToken = nextBatchToken(); + auto txn = lmdb::txn::begin(env_); + auto db = getUserKeysDb(txn); + markUserKeysOutOfDate(txn, db, user_ids, currentBatchToken); + txn.commit(); +} + +void Cache::markUserKeysOutOfDate(lmdb::txn &txn, lmdb::dbi &db, const std::vector<std::string> &user_ids, diff --git a/src/Cache_p.h b/src/Cache_p.h index a15010e6..52375d38 100644 --- a/src/Cache_p.h +++ b/src/Cache_p.h @@ -50,6 +50,7 @@ public: const std::string &room_id, bool verified_only); void updateUserKeys(const std::string &sync_token, const mtx::responses::QueryKeys &keyQuery); + void markUserKeysOutOfDate(const std::vector<std::string> &user_ids); void markUserKeysOutOfDate(lmdb::txn &txn, lmdb::dbi &db, const std::vector<std::string> &user_ids, diff --git a/src/ui/UserProfile.cpp b/src/ui/UserProfile.cpp index 58150ed7..62488954 100644 --- a/src/ui/UserProfile.cpp +++ b/src/ui/UserProfile.cpp @@ -152,6 +152,15 @@ UserProfile::isSelf() const } void +UserProfile::refreshDevices() +{ + std::vector<std::string> keysToRequest; + keysToRequest.push_back(this->userid_.toStdString()); + cache::client()->markUserKeysOutOfDate(keysToRequest); + fetchDeviceList(this->userid_); +} + +void UserProfile::fetchDeviceList(const QString &userID) { auto localUser = utils::localUser(); @@ -205,6 +214,9 @@ UserProfile::fetchDeviceList(const QString &userID) device, DeviceId(device.device_id), UserId(other_user_id))) verified = verification::Status::VERIFIED; + if (isSelf() && device.device_id == ::http::client()->device_id()) + verified = verification::Status::SELF; + deviceInfo.push_back( {QString::fromStdString(d.first), QString::fromStdString(device.unsigned_info.device_display_name), diff --git a/src/ui/UserProfile.h b/src/ui/UserProfile.h index a148c431..c83ec01e 100644 --- a/src/ui/UserProfile.h +++ b/src/ui/UserProfile.h @@ -18,6 +18,7 @@ Q_NAMESPACE enum Status { + SELF, VERIFIED, UNVERIFIED, BLOCKED @@ -118,6 +119,7 @@ public: Q_INVOKABLE void verify(QString device = ""); Q_INVOKABLE void unverify(QString device = ""); Q_INVOKABLE void fetchDeviceList(const QString &userID); + Q_INVOKABLE void refreshDevices(); Q_INVOKABLE void banUser(); // Q_INVOKABLE void ignoreUser(); Q_INVOKABLE void kickUser(); |