diff options
author | Kim Alvefur <zash@zash.se> | 2016-03-14 17:38:50 +0100 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2016-03-14 17:38:50 +0100 |
commit | de0076f16c510ebbfaedf17884e6248b42b599ca (patch) | |
tree | b5a38a6a817aa63528bdc225aa207006faf12f5e /util/presence.lua | |
parent | 3ec49d31afc719ec2bec5dee640e41c11f52fe62 (diff) | |
parent | ab4f0cf7c4d64e331789ed11792796bd043fc940 (diff) | |
download | prosody-de0076f16c510ebbfaedf17884e6248b42b599ca.tar.gz prosody-de0076f16c510ebbfaedf17884e6248b42b599ca.zip |
Merge 0.10->trunk
Diffstat (limited to 'util/presence.lua')
-rw-r--r-- | util/presence.lua | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/util/presence.lua b/util/presence.lua new file mode 100644 index 00000000..f6370354 --- /dev/null +++ b/util/presence.lua @@ -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; +} |