summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorLoren Burkholder <computersemiexpert@outlook.com>2021-07-24 15:35:28 -0400
committerLoren Burkholder <computersemiexpert@outlook.com>2021-07-29 21:07:52 -0400
commit2fe010c04a90bb232f077a513a7ef6e31a97621a (patch)
treebb02fb69d88d747edaa8c5ae5042d72c641c0a7a /src
parentFix incorrect function name (diff)
downloadnheko-2fe010c04a90bb232f077a513a7ef6e31a97621a.tar.xz
Dynamically update read receipts
Diffstat (limited to 'src')
-rw-r--r--src/ReadReceiptsModel.cpp27
-rw-r--r--src/ReadReceiptsModel.h1
2 files changed, 25 insertions, 3 deletions
diff --git a/src/ReadReceiptsModel.cpp b/src/ReadReceiptsModel.cpp

index 8ee9cf45..8a371922 100644 --- a/src/ReadReceiptsModel.cpp +++ b/src/ReadReceiptsModel.cpp
@@ -7,6 +7,7 @@ #include <QLocale> #include "Cache.h" +#include "Cache_p.h" #include "Logging.h" #include "Utils.h" @@ -16,10 +17,26 @@ ReadReceiptsModel::ReadReceiptsModel(QString event_id, QString room_id, QObject , room_id_{room_id} { try { - addUsers(cache::readReceipts(event_id, room_id)); + addUsers(cache::readReceipts(event_id_, room_id_)); } catch (const lmdb::error &) { nhlog::db()->warn("failed to retrieve read receipts for {} {}", - event_id.toStdString(), + event_id_.toStdString(), + room_id_.toStdString()); + + return; + } + + connect(cache::client(), &Cache::newReadReceipts, this, &ReadReceiptsModel::update); +} + +void +ReadReceiptsModel::update() +{ + try { + addUsers(cache::readReceipts(event_id_, room_id_)); + } catch (const lmdb::error &) { + nhlog::db()->warn("failed to retrieve read receipts for {} {}", + event_id_.toStdString(), room_id_.toStdString()); return; @@ -59,7 +76,9 @@ void ReadReceiptsModel::addUsers( const std::multimap<uint64_t, std::string, std::greater<uint64_t>> &users) { - beginInsertRows(QModelIndex{}, readReceipts_.length(), users.size() - 1); + auto oldLen = readReceipts_.length(); + + beginInsertRows(QModelIndex{}, oldLen, users.size() - 1); readReceipts_.clear(); for (const auto &user : users) { @@ -74,6 +93,8 @@ ReadReceiptsModel::addUsers( }); endInsertRows(); + + emit dataChanged(index(0), index(oldLen - 1)); } QString diff --git a/src/ReadReceiptsModel.h b/src/ReadReceiptsModel.h
index d7ff5fb8..f2e39f88 100644 --- a/src/ReadReceiptsModel.h +++ b/src/ReadReceiptsModel.h
@@ -41,6 +41,7 @@ public: public slots: void addUsers(const std::multimap<uint64_t, std::string, std::greater<uint64_t>> &users); + void update(); private: QString dateFormat(const QDateTime &then) const;