Comparison

mod_default_bookmarks/mod_default_bookmarks.lua @ 1325:b21236b6b8d8

Backed out changeset 853a382c9bd6
author Kim Alvefur <zash@zash.se>
date Fri, 28 Feb 2014 15:37:55 +0100
parent 1324:853a382c9bd6
child 1343:7dbde05b48a9
comparison
equal deleted inserted replaced
1324:853a382c9bd6 1325:b21236b6b8d8
11 local st = require "util.stanza" 11 local st = require "util.stanza"
12 12
13 local dm_load = require "util.datamanager".load 13 local dm_load = require "util.datamanager".load
14 local jid_split = require "util.jid".split 14 local jid_split = require "util.jid".split
15 15
16 local private_bookmarks_ns = "storage:storage:bookmarks"; 16 module:hook("iq/self/jabber:iq:private:query", function(event)
17
18 local bookmarks = module:get_option("default_bookmarks");
19
20 module:hook("iq-get/self/jabber:iq:private:query", function(event)
21 local origin, stanza = event.origin, event.stanza; 17 local origin, stanza = event.origin, event.stanza;
18 local typ = stanza.attr.type;
22 local from = stanza.attr.from; 19 local from = stanza.attr.from;
23 if not stanza.tags[1]:get_child("storage", "storage:bookmarks") then return end 20 local query = stanza.tags[1];
24 local data, err = dm_load(origin.username, origin.host, "private"); 21 if #query.tags == 1 and typ == "get" then
25 if data and data[private_bookmarks_ns] then return end 22 local tag = query.tags[1];
26 23 local key = tag.name..":"..tag.attr.xmlns;
27 local reply = st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"}) 24 if key == "storage:storage:bookmarks" then
28 :tag("storage", { xmlns = "storage:bookmarks" }); 25 local data, err = dm_load(origin.username, origin.host, "private");
29 26 if not(data and data[key]) then
30 local nick = jid_split(from); 27 local bookmarks = module:get_option("default_bookmarks");
31 28 if bookmarks and #bookmarks > 0 then
32 local bookmark; 29 local reply = st.reply(stanza):tag("query", {xmlns = "jabber:iq:private"})
33 for i=1,#bookmarks do 30 :tag("storage", { xmlns = "storage:bookmarks" });
34 bookmark = bookmarks[i]; 31 local nick = jid_split(from);
35 if type(bookmark) ~= "table" then -- assume it's only a jid 32 for i=1,#bookmarks do
36 bookmark = { jid = bookmark, name = jid_split(bookmark) }; 33 local bookmark = bookmarks[i];
34 if type(bookmark) ~= "table" then -- assume it's only a jid
35 bookmark = { jid = bookmark, name = jid_split(bookmark) };
36 end
37 reply:tag("conference", {
38 jid = bookmark.jid,
39 name = bookmark.name,
40 autojoin = "1",
41 }):tag("nick"):text(nick):up():up();
42 end
43 origin.send(reply);
44 return true;
45 end
46 end
37 end 47 end
38 reply:tag("conference", {
39 jid = bookmark.jid,
40 name = bookmark.name,
41 autojoin = "1",
42 }):tag("nick"):text(nick):up():up();
43 end 48 end
44 origin.send(reply);
45 return true;
46 end, 1); 49 end, 1);