UNPKG

lisa-api

Version:

Lisa Javascript XMPP Library =============

136 lines (106 loc) 3.61 kB
/* * A very simple Lisa XMPP client. */ var conn; // Connection object var model; // Datamodel object function log(msg) { $('#eventlog').append(msg + "<br/>"); } $(document).ready(function() { // Create the global connection object. conn = new Lisa.Connection(); // Uncomment the next line to log every XMPP packet to the console. //conn.log_xmpp = true; // Connect conn.connect(server, jid, password); /* * When we're connected, listening for changes, and the data-model * has been downloaded, call modelReady() with the new data-model. * * getModel() returns a JQuery.deferred. * See: http://api.jquery.com/category/deferred-object/ * for more information. */ conn.getModel().then(modelReady, function(msg) { alert('Could not initialize: ' + msg); }); // Additionally, write logging messages from the library to the console, and display status changes. conn.logging.setCallback(function(msg) { console.log(msg); }); conn.logging.setStatusCallback(function(msg) { $('#status').text(msg); }); }); function modelReady(newModel) { // initialize the global datamodel object. model = newModel; // Listen for changes in all users and queues. listenToAllUsers(model); listenToAllQueues(model); /* * When new users or queues are added, make sure to listen to those as well. * We do this by listening for changes on the user-list and the queue-list. * Whenever either changes, we re-subscribe to changes for every elemnt in the queue. */ model.userListObservable.addObserver(function() { listenToAllUsers(model); }); model.queueListObservable.addObserver(function() { listenToAllQueues(model); }); } function listenToAllUsers(model) { for (userId in model.users) { // the model.users array contains all users, keyed by user-id. var user = model.users[userId]; // Then, subscribe or re-subscribe to changes on the user. user.observable.addObserver(handleUserChange); } } function listenToAllQueues(model) { for (queueId in model.queues) { // the model.users array contains all users, keyed by user-id. var queue = model.queues[queueId]; // Then, subscribe or re-subscribe to changes on the user. queue.observable.addObserver(handleQueueChange); } } function handleUserChange(user, eventType, item) { log("*** user " + user + " received " + eventType + " event for " + item); log("- queues:") if (_.size(user.queues) == 0) { log("None"); } else for (queueId in user.queues) { var queue = user.queues[queueId]; log(queue); } log("- calls:") if (_.size(user.calls) == 0) { log("None"); } else for (callId in user.calls) { var call = user.calls[callId]; log(call); } log("<br/>"); } function handleQueueChange(queue, eventType, item) { if ((eventType == Lisa.Queue.EventTypes.CallAdded) && (queue.name == "Spoed")) { $("body").css("background-color", "red"); } log("### queue " + queue + " received " + eventType + " for " + item); log("- users:") if (_.size(queue.users) == 0) { log("None"); } else for (userId in queue.users) { var user = queue.users[userId]; log(user); } log("- calls:") if (_.size(queue.calls) == 0) { log("None"); } else for (callId in queue.calls) { var call = queue.calls[callId]; log(call); } log("<br/>"); }