plugins/presence.lua

Thu, 13 Jan 2011 00:23:17 +0100

author
Kim Alvefur <zash@zash.se>
date
Thu, 13 Jan 2011 00:23:17 +0100
changeset 184
8173e57522bf
parent 177
0ffb565fcfd6
child 191
e0664081654c
permissions
-rw-r--r--

plugins.groupchat: Fix a missing `st.` and send join stanza regardless of return value from pre-join event.

local st = require "util.stanza"
function verse.plugins.presence(stream)
	stream.last_presence = nil;

	stream:hook("presence-out", function (presence)
		if not presence.attr.to then
			stream.last_presence = presence; -- Cache non-directed presence
		end
	end, 1);

	function stream:resend_presence()
		if last_presence then
			stream:send(last_presence);
		end
	end

	-- Becase I didn't find util.stanza in the client code.
	-- And, then the name fits better :)
	-- // Zash
	function stream:set_status(opts)
		local p = st.presence();
		if type(opts) == "table" then
			if opts.show then
				p:tag("show"):text(opts.show):up();
			end
			if opts.prio then
				p:tag("priority"):text(opts.priority):up();
			end
			if opts.msg then
				p:tag("status"):text(opts.msg):up();
			end
		end
		-- TODO maybe use opts as prio if it's a int,
		-- or as show or status if it's a string?

		stream:send(p);
	end
end

mercurial