From 2f00fc51bf27708a9c0ac1ce186043059f93923e Mon Sep 17 00:00:00 2001 From: Konstantinos Sideris Date: Sat, 21 Apr 2018 16:34:50 +0300 Subject: Cache refactoring --- include/ChatPage.h | 60 +++++++++++++++--------------------------------------- 1 file changed, 16 insertions(+), 44 deletions(-) (limited to 'include/ChatPage.h') diff --git a/include/ChatPage.h b/include/ChatPage.h index 25cd8615..a6789aea 100644 --- a/include/ChatPage.h +++ b/include/ChatPage.h @@ -24,16 +24,16 @@ #include #include +#include "Cache.h" #include "CommunitiesList.h" #include "Community.h" + #include -class Cache; class MatrixClient; class OverlayModal; class QuickSwitcher; class RoomList; -class RoomSettings; class RoomState; class SideBarActions; class Splitter; @@ -52,6 +52,9 @@ constexpr int CONSENSUS_TIMEOUT = 1000; constexpr int SHOW_CONTENT_TIMEOUT = 3000; constexpr int TYPING_REFRESH_TIMEOUT = 10000; +Q_DECLARE_METATYPE(mtx::responses::Rooms); +Q_DECLARE_METATYPE(std::vector); + class ChatPage : public QWidget { Q_OBJECT @@ -88,6 +91,14 @@ signals: void showLoginPage(const QString &msg); void showUserSettingsPage(); void showOverlayProgressBar(); + void startConsesusTimer(); + + void initializeRoomList(QMap); + void initializeViews(const mtx::responses::Rooms &rooms); + void initializeEmptyViews(const std::vector &rooms); + void syncUI(const mtx::responses::Rooms &rooms); + void continueSync(const QString &next_batch); + void syncRoomlist(const std::map &updates); private slots: void showUnreadMessageNotification(int count); @@ -98,9 +109,9 @@ private slots: void syncCompleted(const mtx::responses::Sync &response); void changeTopRoomInfo(const QString &room_id); void logout(); - void addRoom(const QString &room_id); void removeRoom(const QString &room_id); - void removeInvite(const QString &room_id); + //! Handles initial sync failures. + void retryInitialSync(int status_code = -1); private: static ChatPage *instance_; @@ -110,28 +121,11 @@ private: using Membership = mtx::events::StateEvent; using Memberships = std::map; - using JoinedRooms = std::map; - using LeftRooms = std::map; - using InvitedRooms = std::map; - + using LeftRooms = std::map; void removeLeftRooms(const LeftRooms &rooms); - void updateJoinedRooms(const JoinedRooms &rooms); - void trackInvites(const InvitedRooms &rooms) - { - for (const auto &invite : rooms) - roomInvites_[QString::fromStdString(invite.first)] = true; - } - - std::map> generateMembershipDifference( - const JoinedRooms &rooms, - const RoomStates &states) const; void updateTypingUsers(const QString &roomid, const std::vector &user_ids); - using MemberEvent = mtx::events::StateEvent; - void updateUserDisplayName(const MemberEvent &event); - void updateUserAvatarUrl(const MemberEvent &event); - void loadStateFromCache(); void deleteConfigs(); void resetUI(); @@ -141,10 +135,6 @@ private: template Memberships getMemberships(const std::vector &events) const; - template - void updateUserMetadata(const std::vector &collection); - - void retryInitialSync(int status_code = -1); //! Update the room with the new notification count. void updateRoomNotificationCount(const QString &room_id, uint16_t notification_count); @@ -186,8 +176,6 @@ private: UserInfoWidget *user_info_widget_; RoomStates roomStates_; - std::map> roomSettings_; - std::map roomInvites_; std::map> communities_; @@ -211,22 +199,6 @@ private: QSharedPointer cache_; }; -template -void -ChatPage::updateUserMetadata(const std::vector &collection) -{ - using Member = mtx::events::StateEvent; - - for (const auto &event : collection) { - if (mpark::holds_alternative(event)) { - auto member = mpark::get(event); - - updateUserAvatarUrl(member); - updateUserDisplayName(member); - } - } -} - template std::map> ChatPage::getMemberships(const std::vector &collection) const -- cgit 1.5.1