From ff1390601c8b7b4fbec87f3f23a76495118eff91 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Wed, 18 Nov 2020 15:21:53 +0100 Subject: Matrix: attempt to fix fetching of previous messages before sync is finished --- plugins/Matrix.hpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'plugins') diff --git a/plugins/Matrix.hpp b/plugins/Matrix.hpp index e60889f..e6a35e2 100644 --- a/plugins/Matrix.hpp +++ b/plugins/Matrix.hpp @@ -63,6 +63,7 @@ namespace QuickMedia { sf::Vector2i thumbnail_size; // Set to {0, 0} if not specified RelatedEventType related_event_type = RelatedEventType::NONE; bool mentions_me = false; + bool cache = false; time_t timestamp = 0; // In milliseconds MessageType type; }; @@ -81,10 +82,10 @@ namespace QuickMedia { void set_user_display_name(std::shared_ptr &user, std::string display_name); void set_user_avatar_url(std::shared_ptr &user, std::string avatar_url); - // Ignores duplicates - void prepend_messages_reverse(const std::vector> &new_messages); - // Ignores duplicates - void append_messages(const std::vector> &new_messages); + // Ignores duplicates, returns the number of added messages + size_t prepend_messages_reverse(const std::vector> &new_messages); + // Ignores duplicates, returns the number of added messages + size_t append_messages(const std::vector> &new_messages); std::shared_ptr get_message_by_id(const std::string &id); @@ -483,11 +484,12 @@ namespace QuickMedia { PluginResult parse_notifications(const rapidjson::Value ¬ifications_json); PluginResult parse_sync_account_data(const rapidjson::Value &account_data_json, std::optional> &dm_rooms); PluginResult parse_sync_room_data(const rapidjson::Value &rooms_json, bool is_additional_messages_sync); - PluginResult get_previous_room_messages(RoomData *room_data, bool latest_messages); + PluginResult get_previous_room_messages(RoomData *room_data, bool latest_messages, size_t &num_new_messages); void events_add_user_info(const rapidjson::Value &events_json, RoomData *room_data); std::shared_ptr parse_user_info(const rapidjson::Value &json, const std::string &user_id, RoomData *room_data); void events_set_user_read_marker(const rapidjson::Value &events_json, RoomData *room_data, std::shared_ptr &me); - void events_add_messages(const rapidjson::Value &events_json, RoomData *room_data, MessageDirection message_dir, bool has_unread_notifications); + // Returns the number of messages added + size_t events_add_messages(const rapidjson::Value &events_json, RoomData *room_data, MessageDirection message_dir, bool has_unread_notifications); void events_set_room_name(const rapidjson::Value &events_json, RoomData *room_data); void set_room_name_to_users_if_empty(RoomData *room, const std::string &room_creator_user_id); void events_add_pinned_events(const rapidjson::Value &events_json, RoomData *room_data); -- cgit v1.2.3