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)
|