# HG changeset patch # User Kim Alvefur # Date 1457973530 -3600 # Node ID 8b5a9208c212a2477f8cf6bf93a9c654459f15c4 # Parent 1891854b25ac62fc2c9abacb4378f7d359004ad4# Parent 051279755cad11a29b14f7c6777bfb6543b11889 Merge 0.10->trunk diff -r 1891854b25ac -r 8b5a9208c212 plugins/mod_presence.lua --- a/plugins/mod_presence.lua Mon Mar 14 14:20:37 2016 +0100 +++ b/plugins/mod_presence.lua Mon Mar 14 17:38:50 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); diff -r 1891854b25ac -r 8b5a9208c212 util/presence.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/util/presence.lua Mon Mar 14 17:38:50 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; +}