Skip to content
Snippets Groups Projects
Commit d2a17e20 authored by maksymsproductengine's avatar maksymsproductengine
Browse files

CHUI-612 FIXED Blank conversation names showing in conversation list

parent 2ec0d24e
No related branches found
No related tags found
No related merge requests found
...@@ -37,6 +37,8 @@ ...@@ -37,6 +37,8 @@
#include "llimview.h" //For LLIMModel #include "llimview.h" //For LLIMModel
#include "lltrans.h" #include "lltrans.h"
#include <boost/foreach.hpp>
// //
// Conversation items : common behaviors // Conversation items : common behaviors
// //
...@@ -234,15 +236,19 @@ void LLConversationItemSession::updateName(LLConversationItemParticipant* partic ...@@ -234,15 +236,19 @@ void LLConversationItemSession::updateName(LLConversationItemParticipant* partic
} }
uuid_vec_t temp_uuids; // uuids vector for building the added participants' names string uuid_vec_t temp_uuids; // uuids vector for building the added participants' names string
if (conversation_type == CONV_SESSION_AD_HOC) if (conversation_type == CONV_SESSION_AD_HOC || conversation_type == CONV_SESSION_1_ON_1)
{ {
// Build a string containing the participants UUIDs (minus own agent) and check if ready for display (we don't want "(waiting)" in there) // Build a string containing the participants UUIDs (minus own agent) and check if ready for display (we don't want "(waiting)" in there)
// Note: we don't bind ourselves to the LLAvatarNameCache event as updateParticipantName() is called by // Note: we don't bind ourselves to the LLAvatarNameCache event as updateParticipantName() is called by
// onAvatarNameCache() which is itself attached to the same event. // onAvatarNameCache() which is itself attached to the same event.
child_list_t::iterator iter = mChildren.begin();
while (iter != mChildren.end()) // In the case of a P2P conversation, we need to grab the name of the other participant in the session instance itself
// as we do not create participants for such a session.
LLFolderViewModelItem * itemp;
BOOST_FOREACH(itemp, mChildren)
{ {
LLConversationItemParticipant* current_participant = dynamic_cast<LLConversationItemParticipant*>(*iter); LLConversationItem* current_participant = dynamic_cast<LLConversationItem*>(itemp);
// Add the avatar uuid to the list (except if it's the own agent uuid) // Add the avatar uuid to the list (except if it's the own agent uuid)
if (current_participant->getUUID() != gAgentID) if (current_participant->getUUID() != gAgentID)
{ {
...@@ -250,18 +256,13 @@ void LLConversationItemSession::updateName(LLConversationItemParticipant* partic ...@@ -250,18 +256,13 @@ void LLConversationItemSession::updateName(LLConversationItemParticipant* partic
if (LLAvatarNameCache::get(current_participant->getUUID(), &av_name)) if (LLAvatarNameCache::get(current_participant->getUUID(), &av_name))
{ {
temp_uuids.push_back(current_participant->getUUID()); temp_uuids.push_back(current_participant->getUUID());
if (conversation_type == CONV_SESSION_1_ON_1)
{
break;
}
} }
} }
iter++;
}
}
else if (conversation_type == CONV_SESSION_1_ON_1)
{
// In the case of a P2P conversation, we need to grab the name of the other participant in the session instance itself
// as we do not create participants for such a session.
if (gAgentID != participant->getUUID())
{
temp_uuids.push_back(participant->getUUID());
} }
} }
......
...@@ -498,25 +498,28 @@ void LLFloaterIMSessionTab::refreshConversation() ...@@ -498,25 +498,28 @@ void LLFloaterIMSessionTab::refreshConversation()
updateSessionName(session_name); updateSessionName(session_name);
} }
LLParticipantList* participant_list = getParticipantList(); if (mSessionID.notNull())
if (participant_list)
{ {
LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = participant_list->getChildrenBegin(); LLParticipantList* participant_list = getParticipantList();
LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = participant_list->getChildrenEnd(); if (participant_list)
LLIMSpeakerMgr *speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
while (current_participant_model != end_participant_model)
{ {
LLConversationItemParticipant* participant_model = dynamic_cast<LLConversationItemParticipant*>(*current_participant_model); LLFolderViewModelItemCommon::child_list_t::const_iterator current_participant_model = participant_list->getChildrenBegin();
if (speaker_mgr && participant_model) LLFolderViewModelItemCommon::child_list_t::const_iterator end_participant_model = participant_list->getChildrenEnd();
LLIMSpeakerMgr *speaker_mgr = LLIMModel::getInstance()->getSpeakerManager(mSessionID);
while (current_participant_model != end_participant_model)
{ {
LLSpeaker *participant_speaker = speaker_mgr->findSpeaker(participant_model->getUUID()); LLConversationItemParticipant* participant_model = dynamic_cast<LLConversationItemParticipant*>(*current_participant_model);
LLSpeaker *agent_speaker = speaker_mgr->findSpeaker(gAgentID); if (speaker_mgr && participant_model)
if (participant_speaker && agent_speaker)
{ {
participant_model->setDisplayModeratorRole(agent_speaker->mIsModerator && participant_speaker->mIsModerator); LLSpeaker *participant_speaker = speaker_mgr->findSpeaker(participant_model->getUUID());
LLSpeaker *agent_speaker = speaker_mgr->findSpeaker(gAgentID);
if (participant_speaker && agent_speaker)
{
participant_model->setDisplayModeratorRole(agent_speaker->mIsModerator && participant_speaker->mIsModerator);
}
} }
current_participant_model++;
} }
current_participant_model++;
} }
} }
......
...@@ -847,8 +847,9 @@ bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, co ...@@ -847,8 +847,9 @@ bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, co
bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, bool voice, bool has_offline_msg) bool LLIMModel::newSession(const LLUUID& session_id, const std::string& name, const EInstantMessage& type, const LLUUID& other_participant_id, bool voice, bool has_offline_msg)
{ {
uuid_vec_t no_ids; uuid_vec_t ids;
return newSession(session_id, name, type, other_participant_id, no_ids, voice, has_offline_msg); ids.push_back(other_participant_id);
return newSession(session_id, name, type, other_participant_id, ids, voice, has_offline_msg);
} }
bool LLIMModel::clearSession(const LLUUID& session_id) bool LLIMModel::clearSession(const LLUUID& session_id)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment