65 lines
1.8 KiB
JavaScript
65 lines
1.8 KiB
JavaScript
// The session model contains information about the music
|
|
// sessions that the current client has joined.
|
|
(function(context,$) {
|
|
|
|
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);
|