Comparison

util/presence.lua @ 7279:051279755cad

mod_presence: Move function for selecting "top resources" into a new util.presence
author Kim Alvefur <zash@zash.se>
date Mon, 14 Mar 2016 17:26:27 +0100
child 8885:d4f5d47f874d
comparison
equal deleted inserted replaced
7277:7be7108cb6ed 7279:051279755cad
1 -- Prosody IM
2 -- Copyright (C) 2008-2010 Matthew Wild
3 -- Copyright (C) 2008-2010 Waqas Hussain
4 --
5 -- This project is MIT/X11 licensed. Please see the
6 -- COPYING file in the source package for more information.
7 --
8
9 local t_insert = table.insert;
10
11 local function select_top_resources(user)
12 local priority = 0;
13 local recipients = {};
14 for _, session in pairs(user.sessions) do -- find resource with greatest priority
15 if session.presence then
16 -- TODO check active privacy list for session
17 local p = session.priority;
18 if p > priority then
19 priority = p;
20 recipients = {session};
21 elseif p == priority then
22 t_insert(recipients, session);
23 end
24 end
25 end
26 return recipients;
27 end
28 local function recalc_resource_map(user)
29 if user then
30 user.top_resources = select_top_resources(user);
31 if #user.top_resources == 0 then user.top_resources = nil; end
32 end
33 end
34
35 return {
36 select_top_resources = select_top_resources;
37 recalc_resource_map = recalc_resource_map;
38 }