Comparison

plugins/presence.lua @ 177:0ffb565fcfd6

plugins.presence: Initial commit of plugin that caches the last outgoing presence, and handles rebroadcast
author Kim Alvefur <zash@zash.se>
date Fri, 31 Dec 2010 01:29:28 +0100
child 191:e0664081654c
comparison
equal deleted inserted replaced
176:6004486e8b6c 177:0ffb565fcfd6
1 local st = require "util.stanza"
2 function verse.plugins.presence(stream)
3 stream.last_presence = nil;
4
5 stream:hook("presence-out", function (presence)
6 if not presence.attr.to then
7 stream.last_presence = presence; -- Cache non-directed presence
8 end
9 end, 1);
10
11 function stream:resend_presence()
12 if last_presence then
13 stream:send(last_presence);
14 end
15 end
16
17 -- Becase I didn't find util.stanza in the client code.
18 -- And, then the name fits better :)
19 -- // Zash
20 function stream:set_status(opts)
21 local p = st.presence();
22 if type(opts) == "table" then
23 if opts.show then
24 p:tag("show"):text(opts.show):up();
25 end
26 if opts.prio then
27 p:tag("priority"):text(opts.priority):up();
28 end
29 if opts.msg then
30 p:tag("status"):text(opts.msg):up();
31 end
32 end
33 -- TODO maybe use opts as prio if it's a int,
34 -- or as show or status if it's a string?
35
36 stream:send(p);
37 end
38 end