util/pubsub.lua
changeset 5851 cdcfd93e2f43
parent 5776 bd0ff8ae98a8
child 5973 905b4fd863b4
--- a/util/pubsub.lua	Mon Sep 30 23:46:38 2013 +0100
+++ b/util/pubsub.lua	Fri Oct 04 16:40:27 2013 +0200
@@ -258,6 +258,7 @@
 		end
 		node_obj = self.nodes[node];
 	end
+	node_obj.data[#node_obj.data + 1] = id;
 	node_obj.data[id] = item;
 	self.events.fire_event("item-published", { node = node, actor = actor, id = id, item = item });
 	self.config.broadcaster("items", node, node_obj.subscribers, item);
@@ -275,6 +276,12 @@
 		return false, "item-not-found";
 	end
 	node_obj.data[id] = nil;
+	for i, _id in ipairs(node_obj.data) do
+		if id == _id then
+			table.remove(node_obj, i);
+			break;
+		end
+	end
 	if retract then
 		self.config.broadcaster("items", node, node_obj.subscribers, retract);
 	end
@@ -309,7 +316,7 @@
 		return false, "item-not-found";
 	end
 	if id then -- Restrict results to a single specific item
-		return true, { [id] = node_obj.data[id] };
+		return true, { id, [id] = node_obj.data[id] };
 	else
 		return true, node_obj.data;
 	end