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. * 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; message.setClientInfo(xlate(message.bundle, message.message), localType);
_displays.apply(function (disp :ChatDisplay) :void { dispatchPreparedMessage(message);
if (disp.displayMessage(message, displayed)) {
displayed = true;
}
});
} }
/** /**
@@ -447,13 +443,15 @@ public class ChatDirector extends BasicDirector
var failure :Function = function (reason :String) :void { var failure :Function = function (reason :String) :void {
var msg :String = MessageBundle.compose( var msg :String = MessageBundle.compose(
"m.tell_failed", MessageBundle.taint(target), reason); "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) { if (rl != null) {
rl.requestFailed(null); rl.requestFailed(null);
} }
}; };
var success :Function = function (idleTime :Long, awayMessage :String) :void { 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); addChatter(target);
if (rl != null) { if (rl != null) {
rl.requestCompleted(target); rl.requestCompleted(target);
@@ -579,7 +577,6 @@ public class ChatDirector extends BasicDirector
if (ChatCodes.CHAT_NOTIFICATION === event.getName()) { if (ChatCodes.CHAT_NOTIFICATION === event.getName()) {
var msg :ChatMessage = (event.getArgs()[0] as ChatMessage); var msg :ChatMessage = (event.getArgs()[0] as ChatMessage);
var localtype :String = getLocalType(event.getTargetOid()); var localtype :String = getLocalType(event.getTargetOid());
var message :String = msg.message;
var autoResponse :String = null; var autoResponse :String = null;
var speaker :Name = null; var speaker :Name = null;
var mode :int = -1; 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 there was an originating speaker, see if we want to hear it
if (speaker != null) { if (speaker != null) {
if ((message = filter(message, speaker, false)) == null) { if ((msg.message = filter(msg.message, speaker, false)) == null) {
return; 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! // and send it off!
dispatchMessage(msg); dispatchMessage(msg, localtype);
// if we auto-responded, report as much // if we auto-responded, report as much
if (autoResponse != null) { if (autoResponse != null) {
@@ -674,6 +668,19 @@ public class ChatDirector extends BasicDirector
_cservice = null; _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 * 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 * 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) { if (bundle == null) {
bundle = _bundle; bundle = _bundle;
} }
var msg :SystemMessage = new SystemMessage(); var msg :SystemMessage = new SystemMessage(message, bundle, attLevel);
msg.attentionLevel = attLevel; dispatchMessage(msg, localtype);
msg.setClientInfo(xlate(bundle, message), localtype);
dispatchMessage(msg);
} }
/** /**
@@ -34,7 +34,6 @@ public class TellFeedbackMessage extends UserMessage
public function TellFeedbackMessage (target :Name, message :String, failed :Boolean = false) public function TellFeedbackMessage (target :Name, message :String, failed :Boolean = false)
{ {
super(target, null, message); super(target, null, message);
setClientInfo(message, ChatCodes.PLACE_CHAT_TYPE);
_failed = failed; _failed = failed;
} }
@@ -353,10 +353,10 @@ public class ChatDirector extends BasicDirector
/** /**
* Dispatches the provided message to our chat displays. * Dispatches the provided message to our chat displays.
*/ */
public void dispatchMessage (ChatMessage message) public void dispatchMessage (ChatMessage message, String localType)
{ {
_displayMessageOp.setMessage(message); message.setClientInfo(xlate(message.bundle, message.message), localType);
_displays.apply(_displayMessageOp); dispatchPreparedMessage(message);
} }
/** /**
@@ -526,7 +526,7 @@ public class ChatDirector extends BasicDirector
} }
protected void success () { protected void success () {
dispatchMessage(new TellFeedbackMessage(target, message, false)); dispatchMessage(new TellFeedbackMessage(target, message, false), ChatCodes.PLACE_CHAT_TYPE);
addChatter(target); addChatter(target);
if (rl != null) { if (rl != null) {
rl.requestCompleted(target); rl.requestCompleted(target);
@@ -536,7 +536,9 @@ public class ChatDirector extends BasicDirector
public void requestFailed (String reason) { public void requestFailed (String reason) {
String msg = MessageBundle.compose( String msg = MessageBundle.compose(
"m.tell_failed", MessageBundle.taint(target), reason); "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) { if (rl != null) {
rl.requestFailed(null); rl.requestFailed(null);
} }
@@ -638,7 +640,6 @@ public class ChatDirector extends BasicDirector
if (CHAT_NOTIFICATION.equals(event.getName())) { if (CHAT_NOTIFICATION.equals(event.getName())) {
ChatMessage msg = (ChatMessage) event.getArgs()[0]; ChatMessage msg = (ChatMessage) event.getArgs()[0];
String localtype = getLocalType(event.getTargetOid()); String localtype = getLocalType(event.getTargetOid());
String message = msg.message;
String autoResponse = null; String autoResponse = null;
Name speaker = null; Name speaker = null;
Name speakerDisplay = 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 there was an originating speaker, see if we want to hear it
if (speaker != null) { if (speaker != null) {
if ((message = filter(message, speaker, false)) == null) { if ((msg.message = filter(msg.message, speaker, false)) == null) {
return; 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! // and send it off!
dispatchMessage(msg); dispatchMessage(msg, localtype);
// if we auto-responded, report as much // if we auto-responded, report as much
if (autoResponse != null) { if (autoResponse != null) {
@@ -737,6 +735,15 @@ public class ChatDirector extends BasicDirector
_cservice = null; _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 * 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 * 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) { if (bundle == null) {
bundle = _bundle; bundle = _bundle;
} }
SystemMessage msg = new SystemMessage(); SystemMessage msg = new SystemMessage(message, bundle, attLevel);
msg.attentionLevel = attLevel; dispatchMessage(msg, localtype);
msg.setClientInfo(xlate(bundle, message), localtype);
dispatchMessage(msg);
} }
/** /**
@@ -34,7 +34,6 @@ public class TellFeedbackMessage extends UserMessage
public TellFeedbackMessage (Name target, String message, boolean failure) public TellFeedbackMessage (Name target, String message, boolean failure)
{ {
super(target, null, message, ChatCodes.DEFAULT_MODE); super(target, null, message, ChatCodes.DEFAULT_MODE);
setClientInfo(message, ChatCodes.PLACE_CHAT_TYPE);
_failure = failure; _failure = failure;
} }