Skip to content

Commit feb4494

Browse files
Ansarielmarchcat
authored andcommitted
Fix loading name of banned residents in group bulk ban panel
1 parent 03b6d09 commit feb4494

File tree

2 files changed

+31
-35
lines changed

2 files changed

+31
-35
lines changed

indra/newview/llpanelgroupbulk.cpp

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,16 @@
5454
//////////////////////////////////////////////////////////////////////////
5555
LLPanelGroupBulkImpl::LLPanelGroupBulkImpl(const LLUUID& group_id) :
5656
mGroupID(group_id),
57-
mBulkAgentList(NULL),
58-
mOKButton(NULL),
57+
mBulkAgentList(nullptr),
58+
mOKButton(nullptr),
5959
mAddButton(nullptr),
60-
mRemoveButton(NULL),
61-
mGroupName(NULL),
60+
mRemoveButton(nullptr),
61+
mGroupName(nullptr),
6262
mLoadingText(),
6363
mTooManySelected(),
64-
mCloseCallback(NULL),
65-
mCloseCallbackUserData(NULL),
66-
mAvatarNameCacheConnection(),
67-
mRoleNames(NULL),
64+
mCloseCallback(nullptr),
65+
mCloseCallbackUserData(nullptr),
66+
mRoleNames(nullptr),
6867
mOwnerWarning(),
6968
mAlreadyInGroup(),
7069
mConfirmedOwnerInvite(false),
@@ -74,10 +73,13 @@ LLPanelGroupBulkImpl::LLPanelGroupBulkImpl(const LLUUID& group_id) :
7473

7574
LLPanelGroupBulkImpl::~LLPanelGroupBulkImpl()
7675
{
77-
if (mAvatarNameCacheConnection.connected())
76+
for (auto& [id, connection] : mAvatarNameCacheConnections)
7877
{
79-
mAvatarNameCacheConnection.disconnect();
78+
if (connection.connected())
79+
connection.disconnect();
8080
}
81+
82+
mAvatarNameCacheConnections.clear();
8183
}
8284

8385
void LLPanelGroupBulkImpl::callbackClickAdd(LLPanelGroupBulk* panelp)
@@ -124,43 +126,42 @@ void LLPanelGroupBulkImpl::callbackSelect(LLUICtrl* ctrl, void* userdata)
124126

125127
void LLPanelGroupBulkImpl::addUsers(const uuid_vec_t& agent_ids)
126128
{
127-
std::vector<std::string> names;
128129
for (const LLUUID& agent_id : agent_ids)
129130
{
130-
LLAvatarName av_name;
131-
if (LLAvatarNameCache::get(agent_id, &av_name))
131+
if (LLAvatarName av_name; LLAvatarNameCache::get(agent_id, &av_name))
132132
{
133133
onAvatarNameCache(agent_id, av_name);
134134
}
135135
else
136136
{
137-
if (mAvatarNameCacheConnection.connected())
137+
if (auto found = mAvatarNameCacheConnections.find(agent_id); found != mAvatarNameCacheConnections.end())
138138
{
139-
mAvatarNameCacheConnection.disconnect();
139+
if (found->second.connected())
140+
found->second.disconnect();
141+
142+
mAvatarNameCacheConnections.erase(found);
140143
}
141-
// *TODO : Add a callback per avatar name being fetched.
142-
mAvatarNameCacheConnection = LLAvatarNameCache::get(agent_id,
144+
145+
mAvatarNameCacheConnections.try_emplace(agent_id, LLAvatarNameCache::get(agent_id,
143146
[&](const LLUUID& agent_id, const LLAvatarName& av_name)
144147
{
145148
onAvatarNameCache(agent_id, av_name);
146-
});
149+
}));
147150
}
148151
}
149152
}
150153

151154
void LLPanelGroupBulkImpl::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
152155
{
153-
if (mAvatarNameCacheConnection.connected())
156+
if (auto found = mAvatarNameCacheConnections.find(agent_id); found != mAvatarNameCacheConnections.end())
154157
{
155-
mAvatarNameCacheConnection.disconnect();
156-
}
158+
if (found->second.connected())
159+
found->second.disconnect();
157160

158-
std::vector<std::string> names;
159-
uuid_vec_t agent_ids;
160-
agent_ids.push_back(agent_id);
161-
names.push_back(av_name.getCompleteName());
161+
mAvatarNameCacheConnections.erase(found);
162+
}
162163

163-
addUsers(names, agent_ids);
164+
addUsers({ av_name.getCompleteName() }, { agent_id });
164165
}
165166

166167
void LLPanelGroupBulkImpl::handleRemove()
@@ -232,7 +233,7 @@ void LLPanelGroupBulkImpl::addUsers(const std::vector<std::string>& names, const
232233
}
233234
}
234235

235-
void LLPanelGroupBulkImpl::setGroupName(std::string name)
236+
void LLPanelGroupBulkImpl::setGroupName(const std::string& name)
236237
{
237238
if (mGroupName)
238239
{
@@ -337,12 +338,7 @@ void LLPanelGroupBulk::updateGroupData()
337338

338339
void LLPanelGroupBulk::addUserCallback(const LLUUID& id, const LLAvatarName& av_name)
339340
{
340-
std::vector<std::string> names;
341-
uuid_vec_t agent_ids;
342-
agent_ids.push_back(id);
343-
names.push_back(av_name.getAccountName());
344-
345-
mImplementation->addUsers(names, agent_ids);
341+
mImplementation->addUsers({ av_name.getAccountName() }, { id });
346342
}
347343

348344
void LLPanelGroupBulk::setCloseCallback(void (*close_callback)(void*), void* data)

indra/newview/llpanelgroupbulkimpl.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class LLPanelGroupBulkImpl
5959
void handleSelection();
6060

6161
void addUsers(const std::vector<std::string>& names, const uuid_vec_t& agent_ids);
62-
void setGroupName(std::string name);
62+
void setGroupName(const std::string& name);
6363

6464

6565
public:
@@ -84,7 +84,7 @@ class LLPanelGroupBulkImpl
8484

8585
void (*mCloseCallback)(void* data);
8686
void* mCloseCallbackUserData;
87-
boost::signals2::connection mAvatarNameCacheConnection;
87+
std::map<LLUUID, boost::signals2::connection> mAvatarNameCacheConnections;
8888

8989
// The following are for the LLPanelGroupInvite subclass only.
9090
// These aren't needed for LLPanelGroupBulkBan, but if we have to add another

0 commit comments

Comments
 (0)