# HG changeset patch
# User Kim Alvefur <zash@zash.se>
# Date 1635984006 -3600
# Node ID 76b4e3f12b53fedae96402d87fa9ee79e704ce5e
# Parent  e5028f6eb599018b82f95b8e534d50a7b6871d7e
mod_pep: Wipe pubsub service on user deletion

Data is already wiped from storage, but this ensures everything is
properly unsubscribed, possibly with notifications etc.

Clears recipient cache as well, since it is no longer relevant.

diff -r e5028f6eb599 -r 76b4e3f12b53 plugins/mod_pep.lua
--- a/plugins/mod_pep.lua	Thu Nov 04 00:55:59 2021 +0100
+++ b/plugins/mod_pep.lua	Thu Nov 04 01:00:06 2021 +0100
@@ -467,3 +467,18 @@
 		reply:tag("item", { jid = user_bare, node = node, name = node_obj.config.title }):up();
 	end
 end);
+
+module:hook_global("user-deleted", function(event)
+	if event.host ~= host then return end
+	local username = event.username;
+	local service = services[username];
+	if not service then return end
+	for node in pairs(service.nodes) do service:delete(node, true); end
+
+	local item = pep_service_items[username];
+	pep_service_items[username] = nil;
+	if item then module:remove_item("pep-service", item); end
+
+	recipients[username] = nil;
+end);
+