Populate TabAccount if reopened (#5483)

This commit is contained in:
Zach H 2025-01-16 23:28:18 -05:00 committed by GitHub
parent 80165c28a9
commit cb64a5eea0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 12 deletions

View file

@ -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 <QHBoxLayout>
@ -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<ServerInfo_User> &_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<ServerInfo_User> &_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();
}

View file

@ -103,16 +103,16 @@ void UserListManager::processAddToListEvent(const Event_AddToList &event)
const auto &userListType = QString::fromStdString(event.list_name());
QMap<QString, ServerInfo_User> userMap;
QMap<QString, ServerInfo_User> *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<QString, ServerInfo_User> userMap;
QMap<QString, ServerInfo_User> *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