diff options
author | Nicolas Werner <nicolas.werner@hotmail.de> | 2019-12-14 23:39:02 +0100 |
---|---|---|
committer | Nicolas Werner <nicolas.werner@hotmail.de> | 2019-12-14 23:40:32 +0100 |
commit | 13df852479bf84f297bf59ed99236e52f486a095 (patch) | |
tree | 5bb2bdeecc293d081f92c65f9346ced74f0f988c /src/CacheStructs.h | |
parent | Update README (diff) | |
download | nheko-13df852479bf84f297bf59ed99236e52f486a095.tar.xz |
Reduce some include of Cache.h since it needs 11s on average
Diffstat (limited to 'src/CacheStructs.h')
-rw-r--r-- | src/CacheStructs.h | 91 |
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; +}; |