From c59cd0e80bcbf1e37b7d6b021275d4c8f90f1914 Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Sun, 21 Jan 2018 21:43:21 +0200 Subject: Load the initial cache data without blocking the UI --- include/Cache.h | 14 ++++++++++---- include/RoomState.h | 2 ++ 2 files changed, 12 insertions(+), 4 deletions(-) (limited to 'include') diff --git a/include/Cache.h b/include/Cache.h index 7a626e12..e8d797dd 100644 --- a/include/Cache.h +++ b/include/Cache.h @@ -18,11 +18,12 @@ #pragma once #include +#include #include #include #include -class RoomState; +#include "RoomState.h" //! Used to uniquely identify a list of read receipts. struct ReadReceiptKey @@ -44,17 +45,19 @@ from_json(const json &j, ReadReceiptKey &key) key.room_id = j.at("room_id").get(); } -class Cache +class Cache : public QObject { + Q_OBJECT + public: - Cache(const QString &userId); + Cache(const QString &userId, QObject *parent = nullptr); void setState(const QString &nextBatchToken, const QMap> &states); bool isInitialized() const; QString nextBatchToken() const; - QMap states(); + void states(); using Invites = std::map; Invites invites(); @@ -86,6 +89,9 @@ public: QByteArray image(const QString &url) const; void saveImage(const QString &url, const QByteArray &data); +signals: + void statesLoaded(QMap states); + private: void setNextBatchToken(lmdb::txn &txn, const QString &token); void insertRoomState(lmdb::txn &txn, diff --git a/include/RoomState.h b/include/RoomState.h index 0e91410c..6f335263 100644 --- a/include/RoomState.h +++ b/include/RoomState.h @@ -77,6 +77,8 @@ private: QString userAvatar_; }; +Q_DECLARE_METATYPE(RoomState) + template void RoomState::updateFromEvents(const std::vector &collection) -- cgit 1.5.1