cryptalk/public/js/cryptalk_modules/room.js

75 lines
1.7 KiB
JavaScript
Raw Normal View History

2014-09-26 08:46:35 -04:00
/*
Accepts:
mediator.on('command:join', ...);
mediator.on('command:leave', ...);
mediator.on('command:key', ...);
Emits:
mediator.emit('room:changed',...);
mediator.emit('console:error',...);
mediator.emit('socket:emit',...);
*/
2014-09-27 08:44:41 -04:00
define({
compiles: ['$'],
requires: ['castrato','settings','templates']
}, function ($, requires) {
var // Private properties
room = false,
2014-09-26 08:46:35 -04:00
// Require shortcuts
mediator = requires.castrato,
settings = requires.settings,
templates = requires.templates,
join = function(payload) {
if (room !== false) {
2014-09-27 08:44:41 -04:00
mediator.emit('console:error',
$.template(templates.messages.already_in_room, {
room: room
})
);
2014-09-26 12:21:27 -04:00
} else if (payload.length >= settings.room.maxLen) {
2014-09-27 08:44:41 -04:00
mediator.emit('console:error', $.template(templates.messages.room_name_too_long));
2014-09-26 12:21:27 -04:00
} else if (payload.length < settings.room.minLen) {
2014-09-27 08:44:41 -04:00
mediator.emit('console:error', $.template(templates.messages.room_name_too_short));
2014-09-26 08:46:35 -04:00
} else {
room = payload;
2014-09-27 08:44:41 -04:00
mediator
.emit('room:changed', room)
.emit('socket:emit', {
data: 'room:join',
payload: $.SHA1(room)
});
2014-09-26 08:46:35 -04:00
}
},
leave = function() {
if (room !== false) {
2014-09-27 08:44:41 -04:00
mediator.emit('socket:emit', {
data: 'room:leave',
payload: $.SHA1(room)
});
2014-09-26 08:46:35 -04:00
room = false;
} else {
2014-09-27 08:44:41 -04:00
mediator.emit('console:error', templates.messages.leave_from_nowhere);
2014-09-26 08:46:35 -04:00
}
},
count = function() {
if (room) {
2015-10-04 08:44:40 -04:00
mediator.emit('socket:emit', {data: 'room:count'});
2014-09-26 08:46:35 -04:00
} else {
mediator.emit('console:error', templates.messages.not_in_room);
}
};
// Connect events
mediator.on('command:join', join);
mediator.on('command:leave', leave);
mediator.on('command:count', count);
});