From: Bruno Deferrari Date: Sat, 25 Oct 2008 22:41:33 +0000 (-0200) Subject: irc.client: Notify mode change X-Git-Tag: 0.94~2288^2^2~6^2~3 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=d7affa7c50fa5be84a152df02bb2f688c9252f16 irc.client: Notify mode change --- diff --git a/extra/irc/client/client-tests.factor b/extra/irc/client/client-tests.factor index fe85d6c375..3cf51ecc42 100644 --- a/extra/irc/client/client-tests.factor +++ b/extra/irc/client/client-tests.factor @@ -195,3 +195,11 @@ M: mb-writer dispose drop ; [ participant-changed? ] read-matching-message ] unit-test ] with-irc + +! Mode change +[ { T{ participant-changed f "ircuser" +mode+ "+o" } } [ + "#factortest" [ %add-named-chat ] keep + ":ircserver.net MODE #factortest +o ircuser" %push-line + [ participant-changed? ] read-matching-message + ] unit-test +] with-irc diff --git a/extra/irc/client/client.factor b/extra/irc/client/client.factor index d40c7d400d..d11823b344 100755 --- a/extra/irc/client/client.factor +++ b/extra/irc/client/client.factor @@ -141,7 +141,9 @@ M: irc-chat to-chat in-messages>> mailbox-put ; : change-participant-mode ( channel mode nick -- ) rot chat> [ participants>> set-at ] - [ [ [ +mode+ ] dip ] dip to-chat ] 3bi ; ! FIXME + [ [ participant-changed new + [ (>>nick) ] [ (>>parameter) ] [ +mode+ >>action ] tri ] dip to-chat ] + 3bi ; ! FIXME DEFER: me? @@ -224,11 +226,11 @@ M: quit process-message M: nick process-message [ irc-message-sender ] [ trailing>> ] bi rename-participant-in-all ; -! M: mode process-message ( mode -- ) -! [ channel-mode? ] keep and [ -! [ name>> ] [ mode>> ] [ parameter>> ] tri -! [ change-participant-mode ] [ 2drop ] if* -! ] when* ; +M: mode process-message ( mode -- ) + [ channel-mode? ] keep and [ + [ name>> ] [ mode>> ] [ parameter>> ] tri + [ change-participant-mode ] [ 2drop ] if* + ] when* ; : >nick/mode ( string -- nick mode ) dup first "+@" member? [ unclip ] [ 0 ] if participant-mode ;