mod_presence: Move function for selecting "top resources" into a new util.presence
authorKim Alvefur <zash@zash.se>
Mon, 14 Mar 2016 17:26:27 +0100
changeset 7282 051279755cad
parent 7280 7be7108cb6ed
child 7283 8b5a9208c212
child 7284 21da137d83b0
mod_presence: Move function for selecting "top resources" into a new util.presence
plugins/mod_presence.lua
util/presence.lua
--- a/plugins/mod_presence.lua	Mon Mar 14 13:27:02 2016 +0100
+++ b/plugins/mod_presence.lua	Mon Mar 14 17:26:27 2016 +0100
@@ -10,7 +10,7 @@
 
 local require = require;
 local pairs = pairs;
-local t_concat, t_insert = table.concat, table.insert;
+local t_concat = table.concat;
 local s_find = string.find;
 local tonumber = tonumber;
 
@@ -27,29 +27,7 @@
 local rostermanager = require "core.rostermanager";
 local sessionmanager = require "core.sessionmanager";
 
-local function select_top_resources(user)
-	local priority = 0;
-	local recipients = {};
-	for _, session in pairs(user.sessions) do -- find resource with greatest priority
-		if session.presence then
-			-- TODO check active privacy list for session
-			local p = session.priority;
-			if p > priority then
-				priority = p;
-				recipients = {session};
-			elseif p == priority then
-				t_insert(recipients, session);
-			end
-		end
-	end
-	return recipients;
-end
-local function recalc_resource_map(user)
-	if user then
-		user.top_resources = select_top_resources(user);
-		if #user.top_resources == 0 then user.top_resources = nil; end
-	end
-end
+local recalc_resource_map = require "util.presencepriority".recalc_resource_map;
 
 local ignore_presence_priority = module:get_option_boolean("ignore_presence_priority", false);
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/util/presence.lua	Mon Mar 14 17:26:27 2016 +0100
@@ -0,0 +1,38 @@
+-- Prosody IM
+-- Copyright (C) 2008-2010 Matthew Wild
+-- Copyright (C) 2008-2010 Waqas Hussain
+--
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
+local t_insert = table.insert;
+
+local function select_top_resources(user)
+	local priority = 0;
+	local recipients = {};
+	for _, session in pairs(user.sessions) do -- find resource with greatest priority
+		if session.presence then
+			-- TODO check active privacy list for session
+			local p = session.priority;
+			if p > priority then
+				priority = p;
+				recipients = {session};
+			elseif p == priority then
+				t_insert(recipients, session);
+			end
+		end
+	end
+	return recipients;
+end
+local function recalc_resource_map(user)
+	if user then
+		user.top_resources = select_top_resources(user);
+		if #user.top_resources == 0 then user.top_resources = nil; end
+	end
+end
+
+return {
+	select_top_resources = select_top_resources;
+	recalc_resource_map = recalc_resource_map;
+}