Fix loading name of banned residents in group bulk ban panel
parent
03b6d09ae5
commit
feb4494365
|
|
@ -54,17 +54,16 @@
|
|||
//////////////////////////////////////////////////////////////////////////
|
||||
LLPanelGroupBulkImpl::LLPanelGroupBulkImpl(const LLUUID& group_id) :
|
||||
mGroupID(group_id),
|
||||
mBulkAgentList(NULL),
|
||||
mOKButton(NULL),
|
||||
mBulkAgentList(nullptr),
|
||||
mOKButton(nullptr),
|
||||
mAddButton(nullptr),
|
||||
mRemoveButton(NULL),
|
||||
mGroupName(NULL),
|
||||
mRemoveButton(nullptr),
|
||||
mGroupName(nullptr),
|
||||
mLoadingText(),
|
||||
mTooManySelected(),
|
||||
mCloseCallback(NULL),
|
||||
mCloseCallbackUserData(NULL),
|
||||
mAvatarNameCacheConnection(),
|
||||
mRoleNames(NULL),
|
||||
mCloseCallback(nullptr),
|
||||
mCloseCallbackUserData(nullptr),
|
||||
mRoleNames(nullptr),
|
||||
mOwnerWarning(),
|
||||
mAlreadyInGroup(),
|
||||
mConfirmedOwnerInvite(false),
|
||||
|
|
@ -74,10 +73,13 @@ LLPanelGroupBulkImpl::LLPanelGroupBulkImpl(const LLUUID& group_id) :
|
|||
|
||||
LLPanelGroupBulkImpl::~LLPanelGroupBulkImpl()
|
||||
{
|
||||
if (mAvatarNameCacheConnection.connected())
|
||||
for (auto& [id, connection] : mAvatarNameCacheConnections)
|
||||
{
|
||||
mAvatarNameCacheConnection.disconnect();
|
||||
if (connection.connected())
|
||||
connection.disconnect();
|
||||
}
|
||||
|
||||
mAvatarNameCacheConnections.clear();
|
||||
}
|
||||
|
||||
void LLPanelGroupBulkImpl::callbackClickAdd(LLPanelGroupBulk* panelp)
|
||||
|
|
@ -124,43 +126,42 @@ void LLPanelGroupBulkImpl::callbackSelect(LLUICtrl* ctrl, void* userdata)
|
|||
|
||||
void LLPanelGroupBulkImpl::addUsers(const uuid_vec_t& agent_ids)
|
||||
{
|
||||
std::vector<std::string> names;
|
||||
for (const LLUUID& agent_id : agent_ids)
|
||||
{
|
||||
LLAvatarName av_name;
|
||||
if (LLAvatarNameCache::get(agent_id, &av_name))
|
||||
if (LLAvatarName av_name; LLAvatarNameCache::get(agent_id, &av_name))
|
||||
{
|
||||
onAvatarNameCache(agent_id, av_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (mAvatarNameCacheConnection.connected())
|
||||
if (auto found = mAvatarNameCacheConnections.find(agent_id); found != mAvatarNameCacheConnections.end())
|
||||
{
|
||||
mAvatarNameCacheConnection.disconnect();
|
||||
if (found->second.connected())
|
||||
found->second.disconnect();
|
||||
|
||||
mAvatarNameCacheConnections.erase(found);
|
||||
}
|
||||
// *TODO : Add a callback per avatar name being fetched.
|
||||
mAvatarNameCacheConnection = LLAvatarNameCache::get(agent_id,
|
||||
|
||||
mAvatarNameCacheConnections.try_emplace(agent_id, LLAvatarNameCache::get(agent_id,
|
||||
[&](const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
{
|
||||
onAvatarNameCache(agent_id, av_name);
|
||||
});
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LLPanelGroupBulkImpl::onAvatarNameCache(const LLUUID& agent_id, const LLAvatarName& av_name)
|
||||
{
|
||||
if (mAvatarNameCacheConnection.connected())
|
||||
if (auto found = mAvatarNameCacheConnections.find(agent_id); found != mAvatarNameCacheConnections.end())
|
||||
{
|
||||
mAvatarNameCacheConnection.disconnect();
|
||||
if (found->second.connected())
|
||||
found->second.disconnect();
|
||||
|
||||
mAvatarNameCacheConnections.erase(found);
|
||||
}
|
||||
|
||||
std::vector<std::string> names;
|
||||
uuid_vec_t agent_ids;
|
||||
agent_ids.push_back(agent_id);
|
||||
names.push_back(av_name.getCompleteName());
|
||||
|
||||
addUsers(names, agent_ids);
|
||||
addUsers({ av_name.getCompleteName() }, { agent_id });
|
||||
}
|
||||
|
||||
void LLPanelGroupBulkImpl::handleRemove()
|
||||
|
|
@ -232,7 +233,7 @@ void LLPanelGroupBulkImpl::addUsers(const std::vector<std::string>& names, const
|
|||
}
|
||||
}
|
||||
|
||||
void LLPanelGroupBulkImpl::setGroupName(std::string name)
|
||||
void LLPanelGroupBulkImpl::setGroupName(const std::string& name)
|
||||
{
|
||||
if (mGroupName)
|
||||
{
|
||||
|
|
@ -337,12 +338,7 @@ void LLPanelGroupBulk::updateGroupData()
|
|||
|
||||
void LLPanelGroupBulk::addUserCallback(const LLUUID& id, const LLAvatarName& av_name)
|
||||
{
|
||||
std::vector<std::string> names;
|
||||
uuid_vec_t agent_ids;
|
||||
agent_ids.push_back(id);
|
||||
names.push_back(av_name.getAccountName());
|
||||
|
||||
mImplementation->addUsers(names, agent_ids);
|
||||
mImplementation->addUsers({ av_name.getAccountName() }, { id });
|
||||
}
|
||||
|
||||
void LLPanelGroupBulk::setCloseCallback(void (*close_callback)(void*), void* data)
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ public:
|
|||
void handleSelection();
|
||||
|
||||
void addUsers(const std::vector<std::string>& names, const uuid_vec_t& agent_ids);
|
||||
void setGroupName(std::string name);
|
||||
void setGroupName(const std::string& name);
|
||||
|
||||
|
||||
public:
|
||||
|
|
@ -84,7 +84,7 @@ public:
|
|||
|
||||
void (*mCloseCallback)(void* data);
|
||||
void* mCloseCallbackUserData;
|
||||
boost::signals2::connection mAvatarNameCacheConnection;
|
||||
std::map<LLUUID, boost::signals2::connection> mAvatarNameCacheConnections;
|
||||
|
||||
// The following are for the LLPanelGroupInvite subclass only.
|
||||
// These aren't needed for LLPanelGroupBulkBan, but if we have to add another
|
||||
|
|
|
|||
Loading…
Reference in New Issue