summary refs log tree commit diff
path: root/src/Cache.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Cache.h')
-rw-r--r--src/Cache.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/Cache.h b/src/Cache.h

index fa8355a5..d5d1729e 100644 --- a/src/Cache.h +++ b/src/Cache.h
@@ -347,6 +347,18 @@ public: using UserReceipts = std::multimap<uint64_t, std::string, std::greater<uint64_t>>; UserReceipts readReceipts(const QString &event_id, const QString &room_id); + //! Filter the events that have at least one read receipt. + std::vector<QString> filterReadEvents(const QString &room_id, + const std::vector<QString> &event_ids, + const std::string &excluded_user); + //! Add event for which we are expecting some read receipts. + void addPendingReceipt(const QString &room_id, const QString &event_id); + void removePendingReceipt(lmdb::txn &txn, + const std::string &room_id, + const std::string &event_id); + void notifyForReadReceipts(lmdb::txn &txn, const std::string &room_id); + std::vector<QString> pendingReceiptsEvents(lmdb::txn &txn, const std::string &room_id); + QByteArray image(const QString &url) const; QByteArray image(lmdb::txn &txn, const std::string &url) const; QByteArray image(const std::string &url) const @@ -421,6 +433,9 @@ public: OlmSessionStorage session_storage; +signals: + void newReadReceipts(const QString &room_id, const std::vector<QString> &event_ids); + private: //! Save an invited room. void saveInvite(lmdb::txn &txn, @@ -582,6 +597,11 @@ private: } } + lmdb::dbi getPendingReceiptsDb(lmdb::txn &txn) + { + return lmdb::dbi::open(txn, "pending_receipts", MDB_CREATE); + } + lmdb::dbi getMessagesDb(lmdb::txn &txn, const std::string &room_id) { auto db =