Comparison

plugins/mod_pep_plus.lua @ 8306:202b9951b037

mod_pep_plus: Keep track of nodes, and restore them when later
author Kim Alvefur <zash@zash.se>
date Sun, 08 Oct 2017 23:59:13 +0200
parent 8305:ec605946e597
child 8307:94860b5733d3
comparison
equal deleted inserted replaced
8305:ec605946e597 8306:202b9951b037
20 local recipients = {}; 20 local recipients = {};
21 local hash_map = {}; 21 local hash_map = {};
22 22
23 local host = module.host; 23 local host = module.host;
24 24
25 local known_nodes_map = module:open_store("pep", "map");
26 local known_nodes = module:open_store("pep");
27
25 function module.save() 28 function module.save()
26 return { services = services }; 29 return { services = services };
27 end 30 end
28 31
29 function module.restore(data) 32 function module.restore(data)
38 end 41 end
39 42
40 local function simple_itemstore(username) 43 local function simple_itemstore(username)
41 return function (config, node) 44 return function (config, node)
42 module:log("debug", "new simple_itemstore(%q, %q)", username, node); 45 module:log("debug", "new simple_itemstore(%q, %q)", username, node);
46 known_nodes_map:set(username, node, true);
43 local archive = module:open_store("pep_"..node, "archive"); 47 local archive = module:open_store("pep_"..node, "archive");
44 return lib_pubsub.simple_itemstore(archive, config, username, node, false); 48 return lib_pubsub.simple_itemstore(archive, config, username, node, false);
45 end 49 end
46 end 50 end
47 51
184 end 188 end
185 end; 189 end;
186 190
187 normalize_jid = jid_bare; 191 normalize_jid = jid_bare;
188 }); 192 });
193 local nodes, err = known_nodes:get(username);
194 if nodes then
195 module:log("debug", "Restoring nodes for user %s", username);
196 for node in pairs(nodes) do
197 module:log("debug", "Restoring node %q", node);
198 service:create(node, true);
199 end
200 elseif err then
201 module:log("error", "Could not restore nodes for %s: %s", username, err);
202 else
203 module:log("debug", "No known nodes");
204 end
189 services[username] = service; 205 services[username] = service;
190 module:add_item("pep-service", { service = service, jid = user_bare }); 206 module:add_item("pep-service", { service = service, jid = user_bare });
191 return service; 207 return service;
192 end 208 end
193 209