From: Magnus H. <leg...@us...> - 2007-12-09 23:19:22
|
Update of /cvsroot/emacs-jabber/emacs-jabber In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv19515 Modified Files: jabber-presence.el Log Message: Revision: ma...@fr...--2005/emacs-jabber--cvs-head--0--patch-430 Creator: Magnus Henoch <ma...@fr...> Send presence updates to joined groupchats Index: jabber-presence.el =================================================================== RCS file: /cvsroot/emacs-jabber/emacs-jabber/jabber-presence.el,v retrieving revision 1.38 retrieving revision 1.39 diff -u -d -r1.38 -r1.39 --- jabber-presence.el 9 Dec 2007 00:55:34 -0000 1.38 +++ jabber-presence.el 9 Dec 2007 23:19:18 -0000 1.39 @@ -294,15 +294,23 @@ (setq *jabber-current-status* status) (setq *jabber-current-show* show) (setq *jabber-current-priority* (string-to-number priority)) + (let (subelements-map) + ;; For each connection, we use a different set of subelements. We + ;; cache them, to only generate them once. + + ;; Ordinary presence, with no specified recipient (dolist (jc jabber-connections) - ;; First send presence to everyone subscribed (let ((subelements (jabber-presence-children jc))) - (jabber-send-sexp jc `(presence () ,@subelements)) - ;; Then send to every joined MUC room - ;; XXX: implement reverse mapping - ;; (dolist (groupchat *jabber-active-groupchats*) -;; (jabber-send-sexp `(presence ((to . ,(car groupchat))) ,@subelements))) - )) + (aput 'subelements-map jc subelements) + (jabber-send-sexp jc `(presence () ,@subelements)))) + ;; Then send presence to groupchats + (dolist (groupchat *jabber-active-groupchats*) + (let* ((buffer (get-buffer (jabber-muc-get-buffer (car groupchat)))) + (jc (when buffer + (buffer-local-value 'jabber-buffer-connection buffer))) + (subelements (cdr (assq jc subelements-map)))) + (when jc + (jabber-send-sexp jc `(presence ((to . ,(car groupchat))) ,@subelements)))))) (jabber-display-roster)) (defun jabber-presence-children (jc) |