From: Luigi Pinca Date: Sat, 30 Nov 2013 09:32:13 +0000 (+0100) Subject: small refactoring and cleanup X-Git-Url: https://git.saalbach.dev/?a=commitdiff_plain;h=96900c59c8d2a94168c24d0af39ec23a084e1f4a;p=binbsis50.git small refactoring and cleanup --- diff --git a/lib/rooms.js b/lib/rooms.js index 9a5cb2c..e0c105e 100644 --- a/lib/rooms.js +++ b/lib/rooms.js @@ -7,13 +7,15 @@ var amatch = require('./match') , collectStats = require('./stats') , config = require('../config') , fifolength = config.songsinarun * config.gameswithnorepeats - , isUsername = require('./utils').isUsername , primus , randInt = require('./prng').randInt , rooms = {} // The Object that contains all the room instances , songsdb = clients.songs , sparks - , usersdb = clients.users; + , usersdb = clients.users + , utils = require('./utils') + , isString = utils.isString + , isUsername = utils.isUsername; /** * Expose a function to set up the rooms. @@ -312,7 +314,7 @@ function Room(roomname) { // A user is sending a chat message this.sendChatMessage = function(msg, spark, to) { - if (typeof to === 'string') { + if (isString(to)) { // Check if the recipient is in the room if (usersData[to]) { spark.send('chatmsg', msg, spark.nickname, to); diff --git a/lib/sparks.js b/lib/sparks.js index dcffb3b..52708f2 100644 --- a/lib/sparks.js +++ b/lib/sparks.js @@ -14,7 +14,10 @@ var config = require('../config') , rooms = require('./rooms').rooms , secret , sessionstore - , sparks = Object.create(null); // Sparks of all rooms + , sparks = Object.create(null) // Sparks of all rooms + , utils = require('./utils') + , isFunction = utils.isFunction + , isString = utils.isString; /** * Expose a function to set up Primus. @@ -39,6 +42,7 @@ module.exports = function(options) { fs.writeFileSync(__dirname + '/../public/js/primus.min.js', library.code); primus.on('connection', connection); + primus.on('joinroom', joinRoom); primus.on('log', function(type, message, context) { if (type === 'error') { console.error(context.stack); @@ -76,16 +80,10 @@ var authorize = function(req, authorized) { */ var connection = function(spark) { - var room - , user = spark.headers.session.user; + var user = spark.headers.session.user; delete spark.headers.session; - spark.on('end', function() { - if (room) { - rooms[room].removeUser(spark.nickname); - } - }); spark.on('getoverview', function(callback) { - if (typeof callback !== 'function') { + if (!isFunction(callback)) { return; } var data = Object.create(null); @@ -94,23 +92,8 @@ var connection = function(spark) { } callback(data); }); - spark.on('getstatus', function(callback) { - if (room && typeof callback === 'function') { - rooms[room].sendStatus(callback); - } - }); - spark.on('guess', function(guess) { - if (room && typeof guess === 'string') { - rooms[room].guess(spark, guess); - } - }); - spark.on('ignore', function(who, callback) { - if (room && typeof who === 'string' && typeof callback === 'function') { - rooms[room].ignore(who, spark.nickname, callback); - } - }); spark.on('joinanonymous', function(nickname, room) { - if (!spark.nickname && typeof nickname === 'string' && ~config.rooms.indexOf(room)) { + if (!spark.nickname && isString(nickname) && ~config.rooms.indexOf(room)) { rooms[room].setNickName(spark, nickname); } }); @@ -123,28 +106,49 @@ var connection = function(spark) { rooms[room].joinRoom(spark); } }); - spark.on('joinroom', function(roomname) { - room = roomname; + spark.on('loggedin', function(callback) { + if (!isFunction(callback)) { + return; + } + return user ? callback(true, user) : callback(false); + }); +}; + +/** + * Handle `joinroom` event. + */ + +var joinRoom = function(room, spark) { + spark.on('getstatus', function(callback) { + if (isFunction(callback)) { + rooms[room].sendStatus(callback); + } + }); + spark.on('guess', function(guess) { + if (isString(guess)) { + rooms[room].guess(spark, guess); + } + }); + spark.on('ignore', function(who, callback) { + if (isString(who) && isFunction(callback)) { + rooms[room].ignore(who, spark.nickname, callback); + } }); spark.on('kick', function(who, why, callback) { - if (room && typeof who === 'string' && typeof why === 'string' && - typeof callback === 'function') { + if (isString(who) && isString(why) && isFunction(callback)) { rooms[room].kick(who, why, spark.nickname, callback); } }); - spark.on('loggedin', function(callback) { - if (typeof callback !== 'function') { - return; - } - return user ? callback(true, user) : callback(false); + spark.on('leaveallrooms', function() { + rooms[room].removeUser(spark.nickname); }); spark.on('sendchatmsg', function(msg, to) { - if (room && typeof msg === 'string') { + if (isString(msg)) { rooms[room].sendChatMessage(msg, spark, to); } }); spark.on('unignore', function(who) { - if (room && typeof who === 'string') { + if (isString(who)) { rooms[room].unignore(who, spark.nickname); } }); diff --git a/lib/utils.js b/lib/utils.js index 367e601..a180ca1 100644 --- a/lib/utils.js +++ b/lib/utils.js @@ -49,6 +49,22 @@ exports.isEmail = function(str) { return filter.test(str); }; +/** + * Check whether the given argument is a function. + */ + +exports.isFunction = function(arg) { + return typeof arg === 'function'; +}; + +/** + * Check whether the given argument is a string. + */ + +exports.isString = function(arg) { + return typeof arg === 'string'; +}; + /** * Check whether a given string is a well formed username. */ diff --git a/package.json b/package.json index fec7577..42f3d61 100644 --- a/package.json +++ b/package.json @@ -30,5 +30,5 @@ "start": "node app.js" }, "subdomain": "binb", - "version": "0.3.6-14" + "version": "0.3.6-15" } diff --git a/views/user.jade b/views/user.jade index e5a3f96..2fabd83 100644 --- a/views/user.jade +++ b/views/user.jade @@ -34,19 +34,19 @@ block sections tbody tr td Best guess time - - if (bestguesstime !== "30.0") + - if (bestguesstime !== '30.0') td #{bestguesstime} sec - else td N/A tr td Worst guess time - - if (worstguesstime !== "0.0") + - if (worstguesstime !== '0.0') td #{worstguesstime} sec - else td N/A tr td Mean guess time - - if (typeof meanguesstime !== 'undefined') + - if (meanguesstime) td #{meanguesstime} sec - else td N/A