]> gitweb.factorcode.org Git - factor.git/commitdiff
irc.client: Notify mode change
authorBruno Deferrari <utizoc@gmail.com>
Sat, 25 Oct 2008 22:41:33 +0000 (20:41 -0200)
committerBruno Deferrari <utizoc@gmail.com>
Sat, 25 Oct 2008 22:41:33 +0000 (20:41 -0200)
extra/irc/client/client-tests.factor
extra/irc/client/client.factor

index fe85d6c375697a37cd5bcb54b0b9784a2ac716cc..3cf51ecc425b8c2fe1b252e69b7736744eea9c10 100644 (file)
@@ -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" <irc-channel-chat> [ %add-named-chat ] keep
+      ":ircserver.net MODE #factortest +o ircuser" %push-line
+      [ participant-changed? ] read-matching-message
+  ] unit-test
+] with-irc
index d40c7d400dda11b65415c4f388c28ef6c94f78de..d11823b344d251a37708e61b265c91816cec4721 100755 (executable)
@@ -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 <participant-changed> ] 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 ;