/** * @file * Client-side script to integrate private message threads with Nodejs. */ /*global Drupal, drupalSettings, io*/ /*jslint white:true, this, browser:true*/ (function (Drupal, drupalSettings, io) { "use strict"; var initialized, threadSocket; function init() { // Only initialize once. if (!initialized) { initialized = true; threadSocket = io(drupalSettings.privateMessageNodejs.nodejsUrl + "/pm_thread"); threadSocket.on('connect', function () { // Enter for the room for this thread. threadSocket.emit('thread', drupalSettings.privateMessageThread.threadId); }); // Listen for an emission informing of a new private message in the // thread. threadSocket.on("new private message", function () { // Fetch new messages from the server. Drupal.PrivateMessages.getNewMessages(); }); // Set up a callback for when the user has changed threads. Drupal.PrivateMessages.threadChange.privateMessageNodejs = { threadLoaded: function (threadId) { // Join the room for the new thread. threadSocket.emit('thread', threadId); } }; Drupal.AjaxCommands.prototype.privateMessageNodejsTriggerNewMessages = function () { threadSocket.emit("new private message", drupalSettings.privateMessageThread.threadId); }; } } Drupal.behaviors.privateMessageNodejsThread = { attach: function () { init(); } }; }(Drupal, drupalSettings, io));