summaryrefslogtreecommitdiffstats
path: root/src/CacheStructs.h
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2019-12-14 23:39:02 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2019-12-14 23:40:32 +0100
commit13df852479bf84f297bf59ed99236e52f486a095 (patch)
tree5bb2bdeecc293d081f92c65f9346ced74f0f988c /src/CacheStructs.h
parent6b16616e3a646a5fe3046434a54f9e673c1c0db6 (diff)
Reduce some include of Cache.h since it needs 11s on average
Diffstat (limited to 'src/CacheStructs.h')
-rw-r--r--src/CacheStructs.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/CacheStructs.h b/src/CacheStructs.h
new file mode 100644
index 00000000..275d20cb
--- /dev/null
+++ b/src/CacheStructs.h
@@ -0,0 +1,91 @@
+#pragma once
+
+#include <QDateTime>
+#include <QImage>
+#include <QString>
+
+#include <string>
+
+#include <mtx/events/join_rules.hpp>
+
+struct RoomMember
+{
+ QString user_id;
+ QString display_name;
+ QImage avatar;
+};
+
+struct SearchResult
+{
+ QString user_id;
+ QString display_name;
+};
+
+//! Used to uniquely identify a list of read receipts.
+struct ReadReceiptKey
+{
+ std::string event_id;
+ std::string room_id;
+};
+
+void
+to_json(json &j, const ReadReceiptKey &key);
+
+void
+from_json(const json &j, ReadReceiptKey &key);
+
+struct DescInfo
+{
+ QString event_id;
+ QString userid;
+ QString body;
+ QString timestamp;
+ QDateTime datetime;
+};
+
+//! UI info associated with a room.
+struct RoomInfo
+{
+ //! The calculated name of the room.
+ std::string name;
+ //! The topic of the room.
+ std::string topic;
+ //! The calculated avatar url of the room.
+ std::string avatar_url;
+ //! The calculated version of this room set at creation time.
+ std::string version;
+ //! Whether or not the room is an invite.
+ bool is_invite = false;
+ //! Total number of members in the room.
+ int16_t member_count = 0;
+ //! Who can access to the room.
+ mtx::events::state::JoinRule join_rule = mtx::events::state::JoinRule::Public;
+ bool guest_access = false;
+ //! Metadata describing the last message in the timeline.
+ DescInfo msgInfo;
+ //! The list of tags associated with this room
+ std::vector<std::string> tags;
+};
+
+void
+to_json(json &j, const RoomInfo &info);
+void
+from_json(const json &j, RoomInfo &info);
+
+//! Basic information per member;
+struct MemberInfo
+{
+ std::string name;
+ std::string avatar_url;
+};
+
+void
+to_json(json &j, const MemberInfo &info);
+void
+from_json(const json &j, MemberInfo &info);
+
+struct RoomSearchResult
+{
+ std::string room_id;
+ RoomInfo info;
+};