lib/vines/stanza/presence/subscribed.rb in vines-0.1.1 vs lib/vines/stanza/presence/subscribed.rb in vines-0.2.0
- old
+ new
@@ -11,37 +11,36 @@
end
def process_outbound
self['from'] = stream.user.jid.bare.to_s
to = stamp_to
- route unless local?
+ local? ? process_inbound : route
stream.user.add_subscription_from(to)
storage.save_user(stream.user)
stream.update_user_streams(stream.user)
+ contact = stream.user.contact(to)
router.interested_resources(stream.user.jid).each do |recipient|
- send_subscribed_roster_push(recipient, to, stream.user.contact(to).subscription)
+ contact.send_roster_push(recipient)
end
presences = router.available_resources(stream.user.jid).map do |c|
- doc = Document.new
- doc.create_element('presence',
- 'from' => c.user.jid.to_s,
- 'id' => Kit.uuid,
- 'to' => to.to_s)
+ c.last_broadcast_presence.clone.tap do |node|
+ node['from'] = c.user.jid.to_s
+ node['id'] = Kit.uuid
+ node['to'] = to.to_s
+ end
end
if local?
router.available_resources(to).each do |recipient|
presences.each {|el| recipient.write(el) }
end
else
presences.each {|el| router.route(el) }
end
-
- process_inbound if local?
end
def process_inbound
self['from'] = stream.user.jid.bare.to_s
to = stamp_to
@@ -53,10 +52,10 @@
storage(to.domain).save_user(user)
stream.update_user_streams(user)
router.interested_resources(to).each do |recipient|
recipient.write(@node)
- send_subscribed_roster_push(recipient, stream.user.jid.bare, contact.subscription)
+ contact.send_roster_push(recipient)
end
end
end
end
end