disco: Fire disco-info-changed when necessary, move presence resending there

Fri, 17 Mar 2023 11:15:18 +0000

author
Matthew Wild <mwild1@gmail.com>
date
Fri, 17 Mar 2023 11:15:18 +0000
changeset 475
68a4fb45afbc
parent 474
fca0c7672148
child 476
c34b263499be

disco: Fire disco-info-changed when necessary, move presence resending there

plugins/disco.lua file | annotate | diff | comparison | revisions
--- a/plugins/disco.lua	Fri Mar 17 11:12:12 2023 +0000
+++ b/plugins/disco.lua	Fri Mar 17 11:15:18 2023 +0000
@@ -94,25 +94,25 @@
 
 	function stream:set_identity(identity, node)
 		self.disco.info[node or false].identities = { identity };
-		stream:resend_presence();
+		stream:event("disco-info-changed");
 	end
 
 	function stream:add_identity(identity, node)
 		local identities = self.disco.info[node or false].identities;
 		identities[#identities + 1] = identity;
-		stream:resend_presence();
+		stream:event("disco-info-changed");
 	end
 
 	function stream:add_disco_feature(feature, node)
 		local feature = feature.var or feature;
 		self.disco.info[node or false].features[feature] = true;
-		stream:resend_presence();
+		stream:event("disco-info-changed");
 	end
 
 	function stream:remove_disco_feature(feature, node)
 		local feature = feature.var or feature;
 		self.disco.info[node or false].features[feature] = nil;
-		stream:resend_presence();
+		stream:event("disco-info-changed");
 	end
 
 	function stream:add_disco_item(item, node)
@@ -339,6 +339,10 @@
 		presence:remove_children("c", xmlns_caps);
 		presence:reset():add_child(stream:caps()):reset();
 	end, 10);
+
+	stream:hook("disco-info-changed", function ()
+		stream:resend_presence();
+	end);
 end
 
 -- end of disco.lua

mercurial