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:
Ray Greenwell
2007-07-10 03:04:35 +00:00
parent fd9a50fd55
commit 1867645802
4 changed files with 44 additions and 36 deletions
@@ -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;
}