Did away with hackery where some chat types were initializing their own client info.
git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@4750 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -302,14 +302,10 @@ public class ChatDirector extends BasicDirector
|
||||
/**
|
||||
* Dispatches the provided message to our chat displays.
|
||||
*/
|
||||
public function dispatchMessage (message :ChatMessage) :void
|
||||
public function dispatchMessage (message :ChatMessage, localType :String) :void
|
||||
{
|
||||
var displayed :Boolean = false;
|
||||
_displays.apply(function (disp :ChatDisplay) :void {
|
||||
if (disp.displayMessage(message, displayed)) {
|
||||
displayed = true;
|
||||
}
|
||||
});
|
||||
message.setClientInfo(xlate(message.bundle, message.message), localType);
|
||||
dispatchPreparedMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -447,13 +443,15 @@ public class ChatDirector extends BasicDirector
|
||||
var failure :Function = function (reason :String) :void {
|
||||
var msg :String = MessageBundle.compose(
|
||||
"m.tell_failed", MessageBundle.taint(target), reason);
|
||||
dispatchMessage(new TellFeedbackMessage(target, xlate(_bundle, msg), true));
|
||||
var tfm :TellFeedbackMessage = new TellFeedbackMessage(target, msg, true);
|
||||
tfm.bundle = _bundle;
|
||||
dispatchMessage(tfm, ChatCodes.PLACE_CHAT_TYPE);
|
||||
if (rl != null) {
|
||||
rl.requestFailed(null);
|
||||
}
|
||||
};
|
||||
var success :Function = function (idleTime :Long, awayMessage :String) :void {
|
||||
dispatchMessage(new TellFeedbackMessage(target, message));
|
||||
dispatchMessage(new TellFeedbackMessage(target, message), ChatCodes.PLACE_CHAT_TYPE);
|
||||
addChatter(target);
|
||||
if (rl != null) {
|
||||
rl.requestCompleted(target);
|
||||
@@ -579,7 +577,6 @@ public class ChatDirector extends BasicDirector
|
||||
if (ChatCodes.CHAT_NOTIFICATION === event.getName()) {
|
||||
var msg :ChatMessage = (event.getArgs()[0] as ChatMessage);
|
||||
var localtype :String = getLocalType(event.getTargetOid());
|
||||
var message :String = msg.message;
|
||||
var autoResponse :String = null;
|
||||
var speaker :Name = null;
|
||||
var mode :int = -1;
|
||||
@@ -596,7 +593,7 @@ public class ChatDirector extends BasicDirector
|
||||
|
||||
// if there was an originating speaker, see if we want to hear it
|
||||
if (speaker != null) {
|
||||
if ((message = filter(message, speaker, false)) == null) {
|
||||
if ((msg.message = filter(msg.message, speaker, false)) == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -612,11 +609,8 @@ public class ChatDirector extends BasicDirector
|
||||
}
|
||||
}
|
||||
|
||||
// initialize the client-specific fields of the message
|
||||
msg.setClientInfo(xlate(msg.bundle, message), localtype);
|
||||
|
||||
// and send it off!
|
||||
dispatchMessage(msg);
|
||||
dispatchMessage(msg, localtype);
|
||||
|
||||
// if we auto-responded, report as much
|
||||
if (autoResponse != null) {
|
||||
@@ -674,6 +668,19 @@ public class ChatDirector extends BasicDirector
|
||||
_cservice = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispatch a message to chat displays once it is fully prepared with the clientinfo.
|
||||
*/
|
||||
protected function dispatchPreparedMessage (message :ChatMessage) :void
|
||||
{
|
||||
var displayed :Boolean = false;
|
||||
_displays.apply(function (disp :ChatDisplay) :void {
|
||||
if (disp.displayMessage(message, displayed)) {
|
||||
displayed = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to determine whether we are permitted to post the supplied chat message. Derived
|
||||
* classes may wish to throttle chat or restrict certain types in certain circumstances for
|
||||
@@ -913,10 +920,8 @@ public class ChatDirector extends BasicDirector
|
||||
if (bundle == null) {
|
||||
bundle = _bundle;
|
||||
}
|
||||
var msg :SystemMessage = new SystemMessage();
|
||||
msg.attentionLevel = attLevel;
|
||||
msg.setClientInfo(xlate(bundle, message), localtype);
|
||||
dispatchMessage(msg);
|
||||
var msg :SystemMessage = new SystemMessage(message, bundle, attLevel);
|
||||
dispatchMessage(msg, localtype);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -34,7 +34,6 @@ public class TellFeedbackMessage extends UserMessage
|
||||
public function TellFeedbackMessage (target :Name, message :String, failed :Boolean = false)
|
||||
{
|
||||
super(target, null, message);
|
||||
setClientInfo(message, ChatCodes.PLACE_CHAT_TYPE);
|
||||
_failed = failed;
|
||||
}
|
||||
|
||||
|
||||
@@ -353,10 +353,10 @@ public class ChatDirector extends BasicDirector
|
||||
/**
|
||||
* Dispatches the provided message to our chat displays.
|
||||
*/
|
||||
public void dispatchMessage (ChatMessage message)
|
||||
public void dispatchMessage (ChatMessage message, String localType)
|
||||
{
|
||||
_displayMessageOp.setMessage(message);
|
||||
_displays.apply(_displayMessageOp);
|
||||
message.setClientInfo(xlate(message.bundle, message.message), localType);
|
||||
dispatchPreparedMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -526,7 +526,7 @@ public class ChatDirector extends BasicDirector
|
||||
}
|
||||
|
||||
protected void success () {
|
||||
dispatchMessage(new TellFeedbackMessage(target, message, false));
|
||||
dispatchMessage(new TellFeedbackMessage(target, message, false), ChatCodes.PLACE_CHAT_TYPE);
|
||||
addChatter(target);
|
||||
if (rl != null) {
|
||||
rl.requestCompleted(target);
|
||||
@@ -536,7 +536,9 @@ public class ChatDirector extends BasicDirector
|
||||
public void requestFailed (String reason) {
|
||||
String msg = MessageBundle.compose(
|
||||
"m.tell_failed", MessageBundle.taint(target), reason);
|
||||
dispatchMessage(new TellFeedbackMessage(target, xlate(_bundle, msg), true));
|
||||
TellFeedbackMessage tfm = new TellFeedbackMessage(target, msg, true);
|
||||
tfm.bundle = _bundle;
|
||||
dispatchMessage(tfm, ChatCodes.PLACE_CHAT_TYPE);
|
||||
if (rl != null) {
|
||||
rl.requestFailed(null);
|
||||
}
|
||||
@@ -638,7 +640,6 @@ public class ChatDirector extends BasicDirector
|
||||
if (CHAT_NOTIFICATION.equals(event.getName())) {
|
||||
ChatMessage msg = (ChatMessage) event.getArgs()[0];
|
||||
String localtype = getLocalType(event.getTargetOid());
|
||||
String message = msg.message;
|
||||
String autoResponse = null;
|
||||
Name speaker = null;
|
||||
Name speakerDisplay = null;
|
||||
@@ -658,7 +659,7 @@ public class ChatDirector extends BasicDirector
|
||||
|
||||
// if there was an originating speaker, see if we want to hear it
|
||||
if (speaker != null) {
|
||||
if ((message = filter(message, speaker, false)) == null) {
|
||||
if ((msg.message = filter(msg.message, speaker, false)) == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -675,11 +676,8 @@ public class ChatDirector extends BasicDirector
|
||||
}
|
||||
}
|
||||
|
||||
// initialize the client-specific fields of the message
|
||||
msg.setClientInfo(xlate(msg.bundle, message), localtype);
|
||||
|
||||
// and send it off!
|
||||
dispatchMessage(msg);
|
||||
dispatchMessage(msg, localtype);
|
||||
|
||||
// if we auto-responded, report as much
|
||||
if (autoResponse != null) {
|
||||
@@ -737,6 +735,15 @@ public class ChatDirector extends BasicDirector
|
||||
_cservice = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispatch a message to chat displays once it is fully prepared with the clientinfo.
|
||||
*/
|
||||
protected void dispatchPreparedMessage (ChatMessage message)
|
||||
{
|
||||
_displayMessageOp.setMessage(message);
|
||||
_displays.apply(_displayMessageOp);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to determine whether we are permitted to post the supplied chat message. Derived
|
||||
* classes may wish to throttle chat or restrict certain types in certain circumstances for
|
||||
@@ -996,10 +1003,8 @@ public class ChatDirector extends BasicDirector
|
||||
if (bundle == null) {
|
||||
bundle = _bundle;
|
||||
}
|
||||
SystemMessage msg = new SystemMessage();
|
||||
msg.attentionLevel = attLevel;
|
||||
msg.setClientInfo(xlate(bundle, message), localtype);
|
||||
dispatchMessage(msg);
|
||||
SystemMessage msg = new SystemMessage(message, bundle, attLevel);
|
||||
dispatchMessage(msg, localtype);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -34,7 +34,6 @@ public class TellFeedbackMessage extends UserMessage
|
||||
public TellFeedbackMessage (Name target, String message, boolean failure)
|
||||
{
|
||||
super(target, null, message, ChatCodes.DEFAULT_MODE);
|
||||
setClientInfo(message, ChatCodes.PLACE_CHAT_TYPE);
|
||||
_failure = failure;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user