From 85cfe97696f3482296cc846cb55ed226144c1aab Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Sun, 8 Oct 2017 23:59:13 +0200 Subject: mod_pep_plus: Keep track of nodes, and restore them when later --- plugins/mod_pep_plus.lua | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'plugins/mod_pep_plus.lua') diff --git a/plugins/mod_pep_plus.lua b/plugins/mod_pep_plus.lua index c848221b..52f6b66d 100644 --- a/plugins/mod_pep_plus.lua +++ b/plugins/mod_pep_plus.lua @@ -22,6 +22,9 @@ local hash_map = {}; local host = module.host; +local known_nodes_map = module:open_store("pep", "map"); +local known_nodes = module:open_store("pep"); + function module.save() return { services = services }; end @@ -40,6 +43,7 @@ end local function simple_itemstore(username) return function (config, node) module:log("debug", "new simple_itemstore(%q, %q)", username, node); + known_nodes_map:set(username, node, true); local archive = module:open_store("pep_"..node, "archive"); return lib_pubsub.simple_itemstore(archive, config, username, node, false); end @@ -186,6 +190,18 @@ function get_pep_service(username) normalize_jid = jid_bare; }); + local nodes, err = known_nodes:get(username); + if nodes then + module:log("debug", "Restoring nodes for user %s", username); + for node in pairs(nodes) do + module:log("debug", "Restoring node %q", node); + service:create(node, true); + end + elseif err then + module:log("error", "Could not restore nodes for %s: %s", username, err); + else + module:log("debug", "No known nodes"); + end services[username] = service; module:add_item("pep-service", { service = service, jid = user_bare }); return service; -- cgit v1.2.3