, 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.
// 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);
, 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.
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);
*/
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);
}
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);
}
});
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);
}
});