diff --git a/client/js/lounge.js b/client/js/lounge.js index 0e65b5d3..41505797 100644 --- a/client/js/lounge.js +++ b/client/js/lounge.js @@ -3,7 +3,6 @@ // vendor libraries require("jquery-ui/ui/widgets/sortable"); const $ = require("jquery"); -const io = require("socket.io-client"); const Mousetrap = require("mousetrap"); const URI = require("urijs"); @@ -15,14 +14,9 @@ const helpers_parse = require("./libs/handlebars/parse"); const helpers_roundBadgeNumber = require("./libs/handlebars/roundBadgeNumber"); const slideoutMenu = require("./libs/slideout"); const templates = require("../views"); +const socket = require("./socket"); $(function() { - var path = window.location.pathname + "socket.io/"; - var socket = io({ - path: path, - autoConnect: false, - reconnection: false - }); var commands = [ "/away", "/back", @@ -84,48 +78,6 @@ $(function() { // available. See http://stackoverflow.com/q/14555347/1935861. } } - - [ - "connect_error", - "connect_failed", - "disconnect", - "error", - ].forEach(function(e) { - socket.on(e, function(data) { - $("#loading-page-message").text("Connection failed: " + data); - $("#connection-error").addClass("shown").one("click", function() { - window.onbeforeunload = null; - window.location.reload(); - }); - - // Disables sending a message by pressing Enter. `off` is necessary to - // cancel `inputhistory`, which overrides hitting Enter. `on` is then - // necessary to avoid creating new lines when hitting Enter without Shift. - // This is fairly hacky but this solution is not permanent. - $("#input").off("keydown").on("keydown", function(event) { - if (event.which === 13 && !event.shiftKey) { - event.preventDefault(); - } - }); - // Hides the "Send Message" button - $("#submit").remove(); - - console.error(data); - }); - }); - - socket.on("connecting", function() { - $("#loading-page-message").text("Connecting…"); - }); - - socket.on("connect", function() { - $("#loading-page-message").text("Finalizing connection…"); - }); - - socket.on("authorized", function() { - $("#loading-page-message").text("Authorized, loading messages…"); - }); - socket.on("auth", function(data) { var login = $("#sign-in"); var token; diff --git a/client/js/socket.js b/client/js/socket.js new file mode 100644 index 00000000..278802d7 --- /dev/null +++ b/client/js/socket.js @@ -0,0 +1,54 @@ +"use strict"; + +const $ = require("jquery"); +const io = require("socket.io-client"); +const path = window.location.pathname + "socket.io/"; + +const socket = io({ + path: path, + autoConnect: false, + reconnection: false +}); + +[ + "connect_error", + "connect_failed", + "disconnect", + "error", +].forEach(function(e) { + socket.on(e, function(data) { + $("#loading-page-message").text("Connection failed: " + data); + $("#connection-error").addClass("shown").one("click", function() { + window.onbeforeunload = null; + window.location.reload(); + }); + + // Disables sending a message by pressing Enter. `off` is necessary to + // cancel `inputhistory`, which overrides hitting Enter. `on` is then + // necessary to avoid creating new lines when hitting Enter without Shift. + // This is fairly hacky but this solution is not permanent. + $("#input").off("keydown").on("keydown", function(event) { + if (event.which === 13 && !event.shiftKey) { + event.preventDefault(); + } + }); + // Hides the "Send Message" button + $("#submit").remove(); + + console.error(data); + }); +}); + +socket.on("connecting", function() { + $("#loading-page-message").text("Connecting…"); +}); + +socket.on("connect", function() { + $("#loading-page-message").text("Finalizing connection…"); +}); + +socket.on("authorized", function() { + $("#loading-page-message").text("Authorized, loading messages…"); +}); + +module.exports = socket;