summaryrefslogtreecommitdiff
path: root/jabber-presence.el
diff options
context:
space:
mode:
authorMagnus Henoch <mange@freemail.hu>2007-12-09 23:19:18 +0000
committerKirill A. Korinskiy <catap@catap.ru>2007-12-09 23:19:18 +0000
commit0f0530a18f77a8b3f2eeda7e68be589b0d5d0a24 (patch)
treed99dfa5b06d3ec14289059f00a3ddf8de631e6a4 /jabber-presence.el
parent9b61ea1fe0ee24bcffea3a0d9f5d166ad22fabdd (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.el22
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)