--- Prosody IM v0.4
+-- Prosody IM
-- Copyright (C) 2008-2009 Matthew Wild
-- Copyright (C) 2008-2009 Waqas Hussain
--
function load_roster(username, host)
log("debug", "load_roster: asked for: "..username.."@"..host);
+ local roster;
if hosts[host] and hosts[host].sessions[username] then
- local roster = hosts[host].sessions[username].roster;
+ roster = hosts[host].sessions[username].roster;
if not roster then
log("debug", "load_roster: loading for new user: "..username.."@"..host);
roster = datamanager.load(username, host, "roster") or {};
if not roster[false] then roster[false] = { }; end
hosts[host].sessions[username].roster = roster;
+ hosts[host].events.fire_event("roster-load", username, host, roster);
end
return roster;
end
+
-- Attempt to load roster for non-loaded user
log("debug", "load_roster: loading for offline user: "..username.."@"..host);
- return datamanager.load(username, host, "roster") or {};
+ roster = datamanager.load(username, host, "roster") or {};
+ hosts[host].events.fire_event("roster-load", username, host, roster);
+ return roster;
end
function save_roster(username, host)
if is_contact_pending_in(username, host, jid) then
local roster = load_roster(username, host);
local item = roster[jid];
+ if not item then -- FIXME should roster item be auto-created?
+ item = {subscription = "none", groups = {}};
+ roster[jid] = item;
+ end
if item.subscription == "none" then
item.subscription = "from";
else -- subscription == to