// The session model contains information about the music // sessions that the current client has joined. (function(context,$) { "use strict"; context.JK = context.JK || {}; var logger = context.JK.logger; var sessions = {}; sessions.instances = {}; sessions.JoinSession = function(session_id) { if (sessions.instances[session_id] !== undefined) { logger.error("ERROR: Joined a session twice: " + session_id); return; } sessions.instances[session_id] = { id: session_id, participants: {} }; }; sessions.LeaveSession = function(session_id) { if (sessions.instances[session_id] !== undefined) { delete sessions.instances[session_id]; } }; sessions.UpdateSessionParticipants = function(session_id, participants) { var added = []; var removed = []; var session = sessions.instances[session_id]; if (session === undefined) { logger.error("ERROR: Unknown session: " + session_id); return; } var toBeRemoved = $.extend({}, session.participants); $.each(participants, function (index, participant) { if (session.participants[participant.client_id] === undefined) { session.participants[participant.client_id] = participant; added.push(participant); } else { delete toBeRemoved[participant.client_id]; } }); $.each(toBeRemoved, function(client_id, participant) { delete session.participants[client_id]; removed.push(participant); }); return { added: added, removed: removed }; }; context.JK.Sessions = sessions; })(window,jQuery);