Issue #2907: When passing the injected notification message into addMessage on behalf of the system, optionally specify the agent id and name that should be used.

(cherry picked from commit 7ff297ec3fc5f878cc9a916678987c0033b7eb8a)
meow-7.2.2
Rider Linden 2024-10-25 15:52:10 -07:00
parent a097f88728
commit 48ccb0f75b
3 changed files with 19 additions and 8 deletions

View File

@ -603,12 +603,13 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
}
}
std::string real_name;
if (!notice_name.empty())
{ // The simulator has injected some sort of notice into the conversation.
// findString will only replace the contents of buffer if the notice_id is found.
LLTrans::findString(buffer, notice_name, notice_args);
name = SYSTEM_FROM;
from_id = LLUUID::null;
real_name = SYSTEM_FROM;
}
gIMMgr->addMessage(session_id,
@ -622,8 +623,9 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
region_id,
position,
region_message,
timestamp);
timestamp,
LLUUID::null,
real_name);
}
else
{

View File

@ -3142,9 +3142,16 @@ void LLIMMgr::addMessage(
const LLUUID& region_id,
const LLVector3& position,
bool is_region_msg,
U32 timestamp) // May be zero
U32 timestamp, // May be zero
LLUUID display_id,
std::string_view display_name)
{
LLUUID other_participant_id = target_id;
std::string message_display_name = (display_name.empty()) ? from : std::string(display_name);
if (display_id.isNull() && (display_name.empty()))
{
display_id = other_participant_id;
}
LLUUID new_session_id = session_id;
if (new_session_id.isNull())
@ -3240,7 +3247,7 @@ void LLIMMgr::addMessage(
}
//Play sound for new conversations
if (!skip_message & !gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNewConversation")))
if (!skip_message && !gAgent.isDoNotDisturb() && (gSavedSettings.getBOOL("PlaySoundNewConversation")))
{
make_ui_sound("UISndNewIncomingIMSession");
}
@ -3254,7 +3261,7 @@ void LLIMMgr::addMessage(
if (!LLMuteList::getInstance()->isMuted(other_participant_id, LLMute::flagTextChat) && !skip_message)
{
LLIMModel::instance().addMessage(new_session_id, from, other_participant_id, msg, true, is_region_msg, timestamp);
LLIMModel::instance().addMessage(new_session_id, message_display_name, display_id, msg, true, is_region_msg, timestamp);
}
// Open conversation floater if offline messages are present

View File

@ -368,7 +368,9 @@ public:
const LLUUID& region_id = LLUUID::null,
const LLVector3& position = LLVector3::zero,
bool is_region_msg = false,
U32 timestamp = 0);
U32 timestamp = 0,
LLUUID display_id = LLUUID::null,
std::string_view display_name = "");
void addSystemMessage(const LLUUID& session_id, const std::string& message_name, const LLSD& args);