diff --git a/indra/newview/llimprocessing.cpp b/indra/newview/llimprocessing.cpp
index 64fa0680b1..23f75553fb 100644
--- a/indra/newview/llimprocessing.cpp
+++ b/indra/newview/llimprocessing.cpp
@@ -1194,6 +1194,15 @@ void LLIMProcessing::processNewMessage(LLUUID from_id,
LLStringUtil::format_map_t args;
args["NAME"] = name;
from_name += LLTrans::getString("InvOfferGroupNoticeName", args);
+
+ // FIRE-29677 / SL-13720 workaround
+ if (LLUUID::validate(name))
+ {
+ LLStringUtil::format_map_t args;
+ args["NAME"] = "%s";
+ std::string placeholder_from_name = LLTrans::getString("InvOfferGroupNoticeName", args);
+ from_name = name + "|" + placeholder_from_name;
+ }
//
info->mFromName = from_name;
diff --git a/indra/newview/llviewermessage.cpp b/indra/newview/llviewermessage.cpp
index 92feb9b563..200dc303e2 100644
--- a/indra/newview/llviewermessage.cpp
+++ b/indra/newview/llviewermessage.cpp
@@ -1964,6 +1964,13 @@ void LLOfferInfo::handleRespond(const LLSD& notification, const LLSD& response)
mRespondFunctions[name](notification, response);
}
+void inventory_offer_name_callback(const LLAvatarName& av_name, std::string message)
+{
+ LLSD args;
+ args["MESSAGE"] = llformat(message.c_str(), av_name.getUserName().c_str());
+ LLNotificationsUtil::add("SystemMessageTip", args);
+}
+
bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD& response)
{
LLChat chat;
@@ -2096,11 +2103,29 @@ bool LLOfferInfo::inventory_offer_callback(const LLSD& notification, const LLSD&
{
// This breaks object owner name parsing
//log_message = "" + chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + getSanitizedDescription() + LLTrans::getString(".");
- log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + getSanitizedDescription() + LLTrans::getString(".");
+ // FIRE-29677 / SL-13720 workaround
+ //log_message = chatHistory_string + " " + LLTrans::getString("InvOfferGaveYou") + " " + getSanitizedDescription() + LLTrans::getString(".");
+ //
+
+ //LLSD args;
+ //args["MESSAGE"] = log_message;
+ //LLNotificationsUtil::add("SystemMessageTip", args);
+ log_message = " " + LLTrans::getString("InvOfferGaveYou") + " " + getSanitizedDescription() + LLTrans::getString(".");
+
+ LLUUID inv_sender_id;
+ size_t separator_idx = mFromName.find('|');
+ if (separator_idx != std::string::npos && LLUUID::parseUUID(mFromName.substr(0, separator_idx), &inv_sender_id) && mFromName.size() > (++separator_idx))
+ {
+ log_message = mFromName.substr(separator_idx) + log_message;
+ LLAvatarNameCache::instance().get(inv_sender_id, boost::bind(&inventory_offer_name_callback, _2, log_message));
+ }
+ else
+ {
+ LLSD args;
+ args["MESSAGE"] = chatHistory_string + log_message;
+ LLNotificationsUtil::add("SystemMessageTip", args);
+ }
//
- LLSD args;
- args["MESSAGE"] = log_message;
- LLNotificationsUtil::add("SystemMessageTip", args);
}
// FIRE-3832: Silent accept/decline of inventory offers