# HG changeset patch # User Emmanuel Gil Peyrot # Date 1573659609 -3600 # Node ID 33b3e2387a10025f2f960874fd5aba3ea0f428e8 # Parent b3fb32bd1f015759e3e4964a1a0269a8555d3ce2 mod_bookmarks2: Also migrate legacy PEP bookmarks (current XEP-0048). diff -r b3fb32bd1f01 -r 33b3e2387a10 mod_bookmarks2/mod_bookmarks2.lua --- a/mod_bookmarks2/mod_bookmarks2.lua Wed Nov 13 16:27:50 2019 +0100 +++ b/mod_bookmarks2/mod_bookmarks2.lua Wed Nov 13 16:40:09 2019 +0100 @@ -217,6 +217,34 @@ local service = mod_pep.get_pep_service(username); local jid = username.."@"..session.host; + local ok, ret = service:get_items("storage:bookmarks", session.full_jid); + if ok then + module:log("debug", "Legacy PEP bookmarks found for %s, migrating.", jid); + local failed = false; + for _, item_id in ipairs(ret) do + local item = ret[item_id]; + if item.attr.id ~= "current" then + module:log("warn", "Legacy PEP bookmarks for %s isn’t using 'current' as its id: %s", jid, item.attr.id); + end + local bookmarks = item:get_child("storage", "storage:bookmarks"); + module:log("debug", "Got legacy PEP bookmarks of %s: %s", jid, bookmarks); + + local ok, err = publish_to_pep(session.full_jid, bookmarks, false); + if not ok then + module:log("error", "Failed to store legacy PEP bookmarks to bookmarks 2 for %s, aborting migration: %s", jid, err); + failed = true; + break; + end + end + if not failed then + module:log("debug", "Successfully migrated legacy PEP bookmarks of %s to bookmarks 2, attempting deletion of the node.", jid); + local ok, err = service:delete("storage:bookmarks", jid); + if not ok then + module:log("error", "Failed to delete legacy PEP bookmarks for %s: %s", jid, err); + end + end + end + local data, err = private_storage:get(username, "storage:storage:bookmarks"); if not data then module:log("debug", "No existing legacy bookmarks for %s, migration already done: %s", jid, err); @@ -230,20 +258,20 @@ local bookmarks = st.deserialize(data); module:log("debug", "Got legacy bookmarks of %s: %s", jid, bookmarks); - module:log("debug", "Going to store PEP item for %s.", jid); + module:log("debug", "Going to store legacy bookmarks to bookmarks 2 %s.", jid); local ok, err = publish_to_pep(session.full_jid, bookmarks, false); if not ok then - module:log("error", "Failed to store bookmarks to PEP for %s, aborting migration: %s", jid, err); + module:log("error", "Failed to store legacy bookmarks to bookmarks 2 for %s, aborting migration: %s", jid, err); return; end - module:log("debug", "Stored bookmarks to PEP for %s.", jid); + module:log("debug", "Stored legacy bookmarks to bookmarks 2 for %s.", jid); local ok, err = private_storage:set(username, "storage:storage:bookmarks", nil); if not ok then - module:log("error", "Failed to remove private bookmarks of %s: %s", jid, err); + module:log("error", "Failed to remove legacy bookmarks of %s: %s", jid, err); return; end - module:log("debug", "Removed private bookmarks of %s, migration done!", jid); + module:log("debug", "Removed legacy bookmarks of %s, migration done!", jid); end local function on_node_created(event)