From cb64a5eea061f9f43a5d781a1010322aa2bc5224 Mon Sep 17 00:00:00 2001 From: Zach H Date: Thu, 16 Jan 2025 23:28:18 -0500 Subject: [PATCH] Populate TabAccount if reopened (#5483) --- cockatrice/src/client/tabs/tab_account.cpp | 14 ++++++++++---- cockatrice/src/server/user/user_list_manager.cpp | 16 ++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/cockatrice/src/client/tabs/tab_account.cpp b/cockatrice/src/client/tabs/tab_account.cpp index 7ba292741..f50197721 100644 --- a/cockatrice/src/client/tabs/tab_account.cpp +++ b/cockatrice/src/client/tabs/tab_account.cpp @@ -3,6 +3,7 @@ #include "../../deck/custom_line_edit.h" #include "../../server/pending_command.h" #include "../../server/user/user_info_box.h" +#include "../../server/user/user_list_manager.h" #include "../../server/user/user_list_widget.h" #include "../game_logic/abstract_client.h" #include "../sound_engine.h" @@ -12,6 +13,7 @@ #include "pb/event_user_left.pb.h" #include "pb/response_list_users.pb.h" #include "pb/session_commands.pb.h" +#include "tab_supervisor.h" #include "trice_limits.h" #include @@ -38,6 +40,10 @@ TabAccount::TabAccount(TabSupervisor *_tabSupervisor, AbstractClient *_client, c connect(client, &AbstractClient::addToListEventReceived, this, &TabAccount::processAddToListEvent); connect(client, &AbstractClient::removeFromListEventReceived, this, &TabAccount::processRemoveFromListEvent); + // Attempt to populate the tab with the cache + buddyListReceived(tabSupervisor->getUserListManager()->getBuddyList().values()); + ignoreListReceived(tabSupervisor->getUserListManager()->getIgnoreList().values()); + PendingCommand *pend = client->prepareSessionCommand(Command_ListUsers()); connect(pend, &PendingCommand::finished, this, &TabAccount::processListUsersResponse); client->sendCommand(pend); @@ -181,15 +187,15 @@ void TabAccount::processUserLeftEvent(const Event_UserLeft &event) void TabAccount::buddyListReceived(const QList &_buddyList) { - for (int i = 0; i < _buddyList.size(); ++i) - buddyList->processUserInfo(_buddyList[i], false); + for (const auto &user : _buddyList) + buddyList->processUserInfo(user, false); buddyList->sortItems(); } void TabAccount::ignoreListReceived(const QList &_ignoreList) { - for (int i = 0; i < _ignoreList.size(); ++i) - ignoreList->processUserInfo(_ignoreList[i], false); + for (const auto &user : _ignoreList) + ignoreList->processUserInfo(user, false); ignoreList->sortItems(); } diff --git a/cockatrice/src/server/user/user_list_manager.cpp b/cockatrice/src/server/user/user_list_manager.cpp index d14f5c4b4..6cf0c763d 100644 --- a/cockatrice/src/server/user/user_list_manager.cpp +++ b/cockatrice/src/server/user/user_list_manager.cpp @@ -103,16 +103,16 @@ void UserListManager::processAddToListEvent(const Event_AddToList &event) const auto &userListType = QString::fromStdString(event.list_name()); - QMap userMap; + QMap *userMap; if (userListType == "buddy") { - userMap = buddyUsers; + userMap = &buddyUsers; } else if (userListType == "ignore") { - userMap = ignoredUsers; + userMap = &ignoredUsers; } else { return; } - userMap.insert(userName, user); + userMap->insert(userName, user); } void UserListManager::processRemoveFromListEvent(const Event_RemoveFromList &event) @@ -120,16 +120,16 @@ void UserListManager::processRemoveFromListEvent(const Event_RemoveFromList &eve const auto &userListType = QString::fromStdString(event.list_name()); const auto &userName = QString::fromStdString(event.user_name()); - QMap userMap; + QMap *userMap; if (userListType == "buddy") { - userMap = buddyUsers; + userMap = &buddyUsers; } else if (userListType == "ignore") { - userMap = ignoredUsers; + userMap = &ignoredUsers; } else { return; } - userMap.remove(userName); + userMap->remove(userName); } bool UserListManager::isOwnUserRegistered() const