aboutsummaryrefslogtreecommitdiff
path: root/plugins/Matrix.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/Matrix.hpp')
-rw-r--r--plugins/Matrix.hpp26
1 files changed, 22 insertions, 4 deletions
diff --git a/plugins/Matrix.hpp b/plugins/Matrix.hpp
index c3c5539..f0ca4f5 100644
--- a/plugins/Matrix.hpp
+++ b/plugins/Matrix.hpp
@@ -20,7 +20,7 @@ namespace QuickMedia {
(void)result_tabs;
return PluginResult::ERR;
}
- bool is_video_page() const override { return true; }
+ PageTypez get_type() const override { return PageTypez::VIDEO; }
};
struct RoomData;
@@ -90,10 +90,19 @@ namespace QuickMedia {
const std::vector<std::shared_ptr<Message>>& get_messages_thread_unsafe() const;
const std::vector<std::string>& get_pinned_events_unsafe() const;
+ bool has_prev_batch();
+ void set_prev_batch(const std::string &new_prev_batch);
+ std::string get_prev_batch();
+
+ bool has_name();
+ void set_name(const std::string &new_name);
+ std::string get_name();
+
+ bool has_avatar_url();
+ void set_avatar_url(const std::string &new_avatar_url);
+ std::string get_avatar_url();
+
std::string id;
- std::string name;
- std::string avatar_url;
- std::string prev_batch;
bool initial_fetch_finished = false;
// These 4 variables are set by QuickMedia, not the matrix plugin
@@ -106,9 +115,16 @@ namespace QuickMedia {
// The value is nullptr if the message is fetched and cached but the event if referenced an invalid message.
// TODO: Verify if replied to messages are also part of /sync; then this is not needed.
std::unordered_map<std::string, std::shared_ptr<Message>> fetched_messages_by_event_id;
+
+ size_t index;
private:
std::mutex user_mutex;
std::mutex room_mutex;
+
+ std::string name;
+ std::string avatar_url;
+ std::string prev_batch;
+
// Each room has its own list of user data, even if multiple rooms has the same user
// because users can have different display names and avatars in different rooms.
std::unordered_map<std::string, std::shared_ptr<UserInfo>> user_info_by_user_id;
@@ -194,6 +210,7 @@ namespace QuickMedia {
void events_add_messages(const rapidjson::Value &events_json, RoomData *room_data, MessageDirection message_dir, RoomSyncData *room_sync_data, bool has_unread_notifications);
void events_set_room_name(const rapidjson::Value &events_json, RoomData *room_data);
void events_add_pinned_events(const rapidjson::Value &events_json, RoomData *room_data, RoomSyncData &room_sync_data);
+ void events_add_room_to_tags(const rapidjson::Value &events_json, RoomData *room_data);
std::shared_ptr<Message> parse_message_event(const rapidjson::Value &event_item_json, RoomData *room_data);
PluginResult upload_file(RoomData *room, const std::string &filepath, UploadInfo &file_info, UploadInfo &thumbnail_info, std::string &err_msg);
@@ -205,6 +222,7 @@ namespace QuickMedia {
private:
std::vector<std::unique_ptr<RoomData>> rooms;
std::unordered_map<std::string, size_t> room_data_by_id; // value is an index into |rooms|
+ std::map<std::string, std::vector<size_t>> rooms_by_tag_name; // value is an index into |rooms|
size_t room_list_read_index = 0;
std::mutex room_data_mutex;
std::string user_id;