mod_presence: Move function for selecting "top resources" into a new util.presence
authorKim Alvefur <zash@zash.se>
Mon, 14 Mar 2016 16:26:27 +0000 (17:26 +0100)
committerKim Alvefur <zash@zash.se>
Mon, 14 Mar 2016 16:26:27 +0000 (17:26 +0100)
plugins/mod_presence.lua
util/presence.lua [new file with mode: 0644]

index 76394baf19c300b3fac0a63f5206fdea3b0ec7f6..4ac017ba886f9bd55091171419300d60304237bd 100644 (file)
@@ -10,7 +10,7 @@ local log = module._log;
 
 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 NULL = {};
 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);
 
diff --git a/util/presence.lua b/util/presence.lua
new file mode 100644 (file)
index 0000000..f637035
--- /dev/null
@@ -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;
+}