diff --git a/src/as/com/threerings/crowd/chat/client/ChatDirector.as b/src/as/com/threerings/crowd/chat/client/ChatDirector.as index d2362d662..7b1b39c62 100644 --- a/src/as/com/threerings/crowd/chat/client/ChatDirector.as +++ b/src/as/com/threerings/crowd/chat/client/ChatDirector.as @@ -576,50 +576,10 @@ 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 autoResponse :String = null; - var speaker :Name = null; - var mode :int = -1; - - // figure out if the message was triggered by another user - if (msg is UserMessage) { - var umsg :UserMessage = (msg as UserMessage); - speaker = umsg.speaker; - mode = umsg.mode; - - } else if (msg is UserSystemMessage) { - speaker = (msg as UserSystemMessage).speaker; - } - - // if there was an originating speaker, see if we want to hear it - if (speaker != null) { - if ((msg.message = filter(msg.message, speaker, false)) == null) { - return; - } - - if (ChatCodes.USER_CHAT_TYPE == localtype && mode == ChatCodes.DEFAULT_MODE) { - // if it was a tell, add the speaker as a chatter - addChatter(speaker); - - // note whether or not we have an auto-response - var self :BodyObject = (_cctx.getClient().getClientObject() as BodyObject); - if (!StringUtil.isBlank(self.awayMessage)) { - autoResponse = self.awayMessage; - } - } - } - - // and send it off! - dispatchMessage(msg, localtype); - - // if we auto-responded, report as much - if (autoResponse != null) { - var amsg :String = MessageBundle.tcompose( - "m.auto_responded", speaker, autoResponse); - displayFeedback(_bundle, amsg); - } + processReceivedMessage(msg, localtype); } } - + // documentation inherited override public function clientDidLogon (event :ClientEvent) :void { @@ -667,6 +627,54 @@ public class ChatDirector extends BasicDirector _cservice = null; } + /** + * Processes and dispatches the specified chat message. + */ + protected function processReceivedMessage (msg :ChatMessage, localtype :String) :void + { + var autoResponse :String = null; + var speaker :Name = null; + var mode :int = -1; + + // figure out if the message was triggered by another user + if (msg is UserMessage) { + var umsg :UserMessage = (msg as UserMessage); + speaker = umsg.speaker; + mode = umsg.mode; + + } else if (msg is UserSystemMessage) { + speaker = (msg as UserSystemMessage).speaker; + } + + // if there was an originating speaker, see if we want to hear it + if (speaker != null) { + if ((msg.message = filter(msg.message, speaker, false)) == null) { + return; + } + + if (ChatCodes.USER_CHAT_TYPE == localtype && mode == ChatCodes.DEFAULT_MODE) { + // if it was a tell, add the speaker as a chatter + addChatter(speaker); + + // note whether or not we have an auto-response + var self :BodyObject = (_cctx.getClient().getClientObject() as BodyObject); + if (!StringUtil.isBlank(self.awayMessage)) { + autoResponse = self.awayMessage; + } + } + } + + // and send it off! + dispatchMessage(msg, localtype); + + // if we auto-responded, report as much + if (autoResponse != null) { + var amsg :String = MessageBundle.tcompose( + "m.auto_responded", speaker, autoResponse); + displayFeedback(_bundle, amsg); + } + } + /** * Dispatch a message to chat displays once it is fully prepared with the clientinfo. */ diff --git a/src/java/com/threerings/crowd/chat/client/ChatDirector.java b/src/java/com/threerings/crowd/chat/client/ChatDirector.java index c406eeff9..9d3c24061 100644 --- a/src/java/com/threerings/crowd/chat/client/ChatDirector.java +++ b/src/java/com/threerings/crowd/chat/client/ChatDirector.java @@ -648,51 +648,7 @@ public class ChatDirector extends BasicDirector if (CHAT_NOTIFICATION.equals(event.getName())) { ChatMessage msg = (ChatMessage) event.getArgs()[0]; String localtype = getLocalType(event.getTargetOid()); - String autoResponse = null; - Name speaker = null; - Name speakerDisplay = null; - byte mode = (byte) -1; - - // figure out if the message was triggered by another user - if (msg instanceof UserMessage) { - UserMessage umsg = (UserMessage)msg; - speaker = umsg.speaker; - speakerDisplay = umsg.getSpeakerDisplayName(); - mode = umsg.mode; - - } else if (msg instanceof UserSystemMessage) { - speaker = ((UserSystemMessage)msg).speaker; - speakerDisplay = speaker; - } - - // if there was an originating speaker, see if we want to hear it - if (speaker != null) { - if ((msg.message = filter(msg.message, speaker, false)) == null) { - return; - } - - if (USER_CHAT_TYPE.equals(localtype) && - mode == ChatCodes.DEFAULT_MODE) { - // if it was a tell, add the speaker as a chatter - addChatter(speaker); - - // note whether or not we have an auto-response - BodyObject self = (BodyObject)_ctx.getClient().getClientObject(); - if (!StringUtil.isBlank(self.awayMessage)) { - autoResponse = self.awayMessage; - } - } - } - - // and send it off! - dispatchMessage(msg, localtype); - - // if we auto-responded, report as much - if (autoResponse != null) { - String amsg = MessageBundle.tcompose( - "m.auto_responded", speakerDisplay, autoResponse); - displayFeedback(_bundle, amsg); - } + processReceivedMessage(msg, localtype); } } @@ -743,6 +699,58 @@ public class ChatDirector extends BasicDirector _cservice = null; } + /** + * Processes and dispatches the specified chat message. + */ + protected void processReceivedMessage (ChatMessage msg, String localtype) + { + String autoResponse = null; + Name speaker = null; + Name speakerDisplay = null; + byte mode = (byte) -1; + + // figure out if the message was triggered by another user + if (msg instanceof UserMessage) { + UserMessage umsg = (UserMessage)msg; + speaker = umsg.speaker; + speakerDisplay = umsg.getSpeakerDisplayName(); + mode = umsg.mode; + + } else if (msg instanceof UserSystemMessage) { + speaker = ((UserSystemMessage)msg).speaker; + speakerDisplay = speaker; + } + + // if there was an originating speaker, see if we want to hear it + if (speaker != null) { + if ((msg.message = filter(msg.message, speaker, false)) == null) { + return; + } + + if (USER_CHAT_TYPE.equals(localtype) && + mode == ChatCodes.DEFAULT_MODE) { + // if it was a tell, add the speaker as a chatter + addChatter(speaker); + + // note whether or not we have an auto-response + BodyObject self = (BodyObject)_ctx.getClient().getClientObject(); + if (!StringUtil.isBlank(self.awayMessage)) { + autoResponse = self.awayMessage; + } + } + } + + // and send it off! + dispatchMessage(msg, localtype); + + // if we auto-responded, report as much + if (autoResponse != null) { + String amsg = MessageBundle.tcompose( + "m.auto_responded", speakerDisplay, autoResponse); + displayFeedback(_bundle, amsg); + } + } + /** * Dispatch a message to chat displays once it is fully prepared with the clientinfo. */