diff options
author | Magnus Henoch <mange@freemail.hu> | 2007-12-09 23:19:18 +0000 |
---|---|---|
committer | Kirill A. Korinskiy <catap@catap.ru> | 2007-12-09 23:19:18 +0000 |
commit | 0f0530a18f77a8b3f2eeda7e68be589b0d5d0a24 (patch) | |
tree | d99dfa5b06d3ec14289059f00a3ddf8de631e6a4 /jabber-presence.el | |
parent | 9b61ea1fe0ee24bcffea3a0d9f5d166ad22fabdd (diff) |
Revision: mange@freemail.hu--2005/emacs-jabber--cvs-head--0--patch-430
Creator: Magnus Henoch <mange@freemail.hu>
Send presence updates to joined groupchats
Diffstat (limited to 'jabber-presence.el')
-rw-r--r-- | jabber-presence.el | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/jabber-presence.el b/jabber-presence.el index 65e2300..f21c338 100644 --- a/jabber-presence.el +++ b/jabber-presence.el @@ -294,15 +294,23 @@ CLOSURE-DATA should be 'initial if initial roster push, nil otherwise." (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) |