General cleanup
This commit is contained in:
parent
8b84f8f9fd
commit
65de12499d
|
@ -25,6 +25,10 @@ fandango.defaults({
|
|||
// Require main cryptalk module.
|
||||
require(['cryptalk'], function () {}, function (e) {
|
||||
document.getElementById('chat').innerHTML = '<li><i class="fatal">Fatal: An error was thrown during initialization causing the application to stop.<br>Examine the logs for more details.</i></li>';
|
||||
console.log && console.log(e);
|
||||
|
||||
if (console.log) {
|
||||
console.log(e);
|
||||
}
|
||||
|
||||
throw e;
|
||||
});
|
|
@ -30,7 +30,7 @@ define(['fandango', 'websocket', 'aes'], function (fandango, websocket, aes) {
|
|||
} else {
|
||||
selector = selector.slice(1);
|
||||
|
||||
if (match = document.getElementById(selector)) {
|
||||
if ((match = document.getElementById(selector))) {
|
||||
matches.push(match);
|
||||
}
|
||||
}
|
||||
|
@ -69,7 +69,7 @@ define(['fandango', 'websocket', 'aes'], function (fandango, websocket, aes) {
|
|||
|
||||
utils.activeElement = function () {
|
||||
try { return document.activeElement; } catch (e) {}
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Removes all characters but 0 - 9 from given string.
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* Usage:
|
||||
|
||||
channel.emit('audio:play',message);
|
||||
channel.emit('audio:on');
|
||||
channel.emit('audio:off');
|
||||
mediator.emit('audio:play',message);
|
||||
mediator.emit('audio:on');
|
||||
mediator.emit('audio:off');
|
||||
|
||||
*/
|
||||
|
||||
|
@ -12,8 +12,6 @@ define(['queue','mediator'], function (queue,mediator) {
|
|||
var ac = false,
|
||||
enabled = true,
|
||||
|
||||
channel = mediator(),
|
||||
|
||||
// Recursive function for playing tones, takes an array of [tone,start_ms,duration_ms] - entries
|
||||
// i is only used for recursion
|
||||
playTones = function (tones, i) {
|
||||
|
@ -22,7 +20,9 @@ define(['queue','mediator'], function (queue,mediator) {
|
|||
i = (i === undefined) ? 0 : i;
|
||||
|
||||
// Stop if we've reached the end of iteration, and require ac
|
||||
if( !(i < Object.keys(tones).length) || !ac || !enabled ) return;
|
||||
if (!ac || !enabled || !(i < Object.keys(tones).length)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Add tones to execution queue
|
||||
var current_tones = tones[i],
|
||||
|
@ -58,10 +58,12 @@ define(['queue','mediator'], function (queue,mediator) {
|
|||
enabled = false;
|
||||
};
|
||||
|
||||
if( window.AudioContext || window.webkitAudioContext ) ac = new ( window.AudioContext || window.webkitAudioContext );
|
||||
if (window.AudioContext || window.webkitAudioContext) {
|
||||
ac = new (window.AudioContext || window.webkitAudioContext);
|
||||
}
|
||||
|
||||
channel.on('audio:play',function(message) { playTones(message) });
|
||||
channel.on('audio:on',function(message) { on(); });
|
||||
channel.on('audio:off',function(message) { off(); });
|
||||
mediator.on('audio:play', function (message) { playTones(message); });
|
||||
mediator.on('audio:on', function (message) { on(); });
|
||||
mediator.on('audio:off', function (message) { off(); });
|
||||
|
||||
});
|
|
@ -3,7 +3,6 @@ define({
|
|||
compiles: ['$'],
|
||||
requires: ['mediator','hosts', 'templates', 'audio', 'fandango','notifications', 'sounds', 'win']
|
||||
}, function ($, requires, data) {
|
||||
|
||||
var socket,
|
||||
key,
|
||||
host,
|
||||
|
@ -29,9 +28,9 @@ define({
|
|||
// Shortcut
|
||||
hosts = requires.hosts,
|
||||
fandango = requires.fandango,
|
||||
mediator = requires.mediator,
|
||||
templates = requires.templates,
|
||||
sounds = requires.sounds,
|
||||
channel = requires.mediator(),
|
||||
win = requires.win,
|
||||
|
||||
lockInput = function () {
|
||||
|
@ -51,7 +50,7 @@ define({
|
|||
icon = (type == 'message') ? 'gfx/icon_128x128.png' : (type == 'error') ? 'gfx/icon_128x128_error.png' : 'gfx/icon_128x128_info.png';
|
||||
|
||||
// Emit notification
|
||||
channel.emit('notification:send',
|
||||
mediator.emit('notification:send',
|
||||
{
|
||||
title: title.substring(0, 20),
|
||||
body: text.substring(0, 80),
|
||||
|
@ -59,7 +58,7 @@ define({
|
|||
});
|
||||
|
||||
// Emit sound
|
||||
if ( type == 'message' ) channel.emit('audio:play',sounds.message);
|
||||
if ( type == 'message' ) mediator.emit('audio:play',sounds.message);
|
||||
|
||||
},
|
||||
|
||||
|
@ -81,7 +80,7 @@ define({
|
|||
clearInput();
|
||||
}
|
||||
|
||||
showNotification(type, nick, text)
|
||||
showNotification(type, nick, text);
|
||||
|
||||
// Append the post to the chat DOM element
|
||||
components.chat[clearChat ? 'html' : 'append'](post);
|
||||
|
@ -117,14 +116,14 @@ define({
|
|||
post('info', strhosts);
|
||||
done();
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
//
|
||||
force = (force && force.toLowerCase() === 'force');
|
||||
|
||||
// Loop through all the hosts
|
||||
while (host = hosts.hosts[i]) {
|
||||
while ((host = hosts.hosts[i])) {
|
||||
if (!force && host.settings !== undefined) {
|
||||
if (host.settings) {
|
||||
callback(host, i, 1)();
|
||||
|
@ -150,7 +149,7 @@ define({
|
|||
}
|
||||
|
||||
if ($.isDigits(toHost)) {
|
||||
if (host = hosts.hosts[+toHost]) {
|
||||
if ((host = hosts.hosts[+toHost])) {
|
||||
if (host.settings) {
|
||||
settings = host.settings;
|
||||
} else {
|
||||
|
@ -213,7 +212,7 @@ define({
|
|||
.on('message:send', function (data) {
|
||||
var decrypted = $.AES.decrypt(data.msg, room + key),
|
||||
sanitized = $.escapeHtml(decrypted),
|
||||
nick = (data.nick == undefined || !data.nick ) ? templates.default_nick : $.escapeHtml($.AES.decrypt(data.nick, room + key));
|
||||
nick = !data.nick ? templates.default_nick : $.escapeHtml($.AES.decrypt(data.nick, room + key));
|
||||
|
||||
if (!decrypted) {
|
||||
post('error', templates.messages.unable_to_decrypt);
|
||||
|
@ -274,7 +273,7 @@ define({
|
|||
reconnect: function (foo, done) {
|
||||
if (host) {
|
||||
if (host.connected) {
|
||||
commands.disconnect()
|
||||
commands.disconnect();
|
||||
commands.connect(host, done);
|
||||
} else {
|
||||
commands.connect(host, done);
|
||||
|
@ -503,7 +502,7 @@ define({
|
|||
socket.emit('message:send', {
|
||||
room: room,
|
||||
msg: $.AES.encrypt(buffer, room + key).toString(),
|
||||
nick: (nick && nick != undefined) ? $.AES.encrypt(nick, room + key).toString() : false
|
||||
nick: nick ? $.AES.encrypt(nick, room + key).toString() : false
|
||||
});
|
||||
|
||||
// And clear the the buffer
|
||||
|
@ -524,13 +523,13 @@ define({
|
|||
post('motd', templates.motd, true);
|
||||
|
||||
// Route mediator messages
|
||||
channel.on('window:focused',function() {
|
||||
channel.emit('audio:off');
|
||||
channel.emit('notification:off');
|
||||
mediator.on('window:focused',function() {
|
||||
mediator.emit('audio:off');
|
||||
mediator.emit('notification:off');
|
||||
});
|
||||
channel.on('window:blurred',function() {
|
||||
if( !mute ) channel.emit('audio:on');
|
||||
channel.emit('notification:on');
|
||||
mediator.on('window:blurred',function() {
|
||||
if( !mute ) mediator.emit('audio:on');
|
||||
mediator.emit('notification:on');
|
||||
});
|
||||
|
||||
unlockInput();
|
||||
|
|
|
@ -1 +1,188 @@
|
|||
define(function(){function f(d,a,b){var c=e[d],g=c.length,h=g,f=h,k=[],l=b?function(a){a&&k.push(a);!--h&&b(k,g)}:m;if(c)for(;d=c[--f];)d[1](a,l),2>d[1].length&&h--;else b&&b(k,g)}var l=0,e={},m=function(){};return function(){var d=l++;return{emit:function(a,b,c){f(a,b,c);return this},on:function(a,b){(e[a]||(e[a]=[])).push([d,b]);return this},off:function(a){var b=0,c=e[a];if(c)for(;a=c[b++];)a[0]===d&&c.splice(--b,1);return this}}}});
|
||||
(function (self, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define([], factory);
|
||||
} else if (typeof exports === 'object') { // Node
|
||||
module.exports = factory();
|
||||
} else {
|
||||
// Attaches to the current context
|
||||
self.castrato = factory;
|
||||
}
|
||||
}(this, (function () {
|
||||
var
|
||||
/**
|
||||
* Contains the next unique node id.
|
||||
*
|
||||
* @property index
|
||||
* @type {Integer}
|
||||
* @private
|
||||
*/
|
||||
index = 0,
|
||||
|
||||
/**
|
||||
* Contains all subscriptions
|
||||
*
|
||||
* @property subs
|
||||
* @type {Object}
|
||||
* @private
|
||||
*/
|
||||
subs = {},
|
||||
|
||||
/**
|
||||
* An empty function.
|
||||
* This method does not accept any arguments.
|
||||
*
|
||||
* @property noop
|
||||
* @type {function}
|
||||
* @private
|
||||
*/
|
||||
noop = function () {};
|
||||
|
||||
/**
|
||||
* Creates a new entry in the `subs` object.
|
||||
*
|
||||
* @method on
|
||||
* @private
|
||||
* @param {Integer} fromId The unique subscriber ID.
|
||||
* @param {String} event The event to subscribe to.
|
||||
* @param {Function} func A function to execute when the event is triggered.
|
||||
*/
|
||||
function on (fromId, event, func) {
|
||||
(subs[event] || (subs[event] = [])).push([fromId, func, func.length]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes all event handlers originating from `fromId` and optionally filter by handler.
|
||||
*
|
||||
* @method off
|
||||
* @private
|
||||
* @param {Integer} fromId The unique subscriber ID.
|
||||
* @param {String} event The event to unsubscribe from.
|
||||
* @param {Function} [func=null] The original handler that was attached to this event. If not passed, all subscriptions will be removed.
|
||||
*/
|
||||
function off (fromId, event, func) {
|
||||
var sub,
|
||||
i = 0,
|
||||
toSubs = subs[event];
|
||||
|
||||
if (toSubs) {
|
||||
while ((sub = toSubs[i++])) {
|
||||
if (sub[0] === fromId && (!func || func === sub[1])) {
|
||||
toSubs.splice(--i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loops through all subscriptions, calling all handlers attached to given `event`.
|
||||
*
|
||||
* @method emit
|
||||
* @private
|
||||
* @param {Integer} fromId The unique subscriber ID.
|
||||
* @param {String} event The event to emit
|
||||
* @param {Object} [data=undefined] Parameters to pass along to the event handler.
|
||||
* @param {Function} [func=undefined] A function to execute when all event handlers has returned.
|
||||
*/
|
||||
function emit (persistent, event, data, func) {
|
||||
var sub,
|
||||
toSubs = subs[event] || [],
|
||||
total = toSubs.length,
|
||||
left = total,
|
||||
loop = total,
|
||||
answers = [],
|
||||
done;
|
||||
|
||||
if (loop) {
|
||||
done = !func ? noop : function (data) {
|
||||
if (data) {
|
||||
answers.push(data);
|
||||
}
|
||||
|
||||
if (!--left) {
|
||||
func(answers, total);
|
||||
func = 0;
|
||||
}
|
||||
};
|
||||
|
||||
while ((sub = toSubs[--loop])) {
|
||||
sub[1](data, (sub[2] > 1) ? done : left--);
|
||||
}
|
||||
}
|
||||
|
||||
// `func` get destructed when called.
|
||||
// It has to be called at least once - even if no one was subscribing.
|
||||
// Execute it if it still exists.
|
||||
if (func) {
|
||||
func(answers, total);
|
||||
}
|
||||
}
|
||||
|
||||
return function () {
|
||||
var nodeId = index++;
|
||||
|
||||
return {
|
||||
/**
|
||||
* Execute all handlers attached to the given event.
|
||||
*
|
||||
* @method emit
|
||||
* @param {String} event The event to emit
|
||||
* @param {Object} [data=undefined] Parameters to pass along to the event handler.
|
||||
* @param {Function} [func=undefined] A function to execute when all event handlers has returned.
|
||||
* @return {Object} `this`
|
||||
* @example
|
||||
* $.emit('something');
|
||||
* $.emit('something', { foo: 'bar' });
|
||||
* $.emit('something', { foo: 'bar' }, function (data, subscribers) {
|
||||
* console.log('Emit done, a total of ' + subscribers + ' subscribers returned: ', data);
|
||||
* });
|
||||
*/
|
||||
emit: function (persistent, event, data, func) {
|
||||
// emit('something', { data: true }, function () {});
|
||||
if (persistent !== true || persistent !== false) {
|
||||
func = data;
|
||||
data = event;
|
||||
event = persistent;
|
||||
persistent = false;
|
||||
}
|
||||
|
||||
emit(persistent, event, data, func);
|
||||
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Attach an event handler function for one event.
|
||||
*
|
||||
* @method on
|
||||
* @param {String} event The event to subscribe to.
|
||||
* @param {Function} func A function to execute when the event is triggered.
|
||||
* @return {Object} `this`
|
||||
* @example
|
||||
* $.on('something', function (data) {
|
||||
* console.log('Got something!', data);
|
||||
* });
|
||||
*/
|
||||
on: function (event, func) {
|
||||
on(nodeId, event, func);
|
||||
return this;
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes an event handler function for one event.
|
||||
*
|
||||
* @method off
|
||||
* @param {String} event The event to unsubscribe from.
|
||||
* @param {Function} [func=null] The original handler that was attached to this event. If not passed, all subscriptions will be removed.
|
||||
* @return {Object} `this`
|
||||
* @example
|
||||
* $.off('something');
|
||||
* $.off('something else', handler);
|
||||
*/
|
||||
off: function (event) {
|
||||
off(nodeId, event);
|
||||
return this;
|
||||
}
|
||||
};
|
||||
};
|
||||
}())));
|
|
@ -2,17 +2,17 @@
|
|||
Usage
|
||||
|
||||
// Send an notification
|
||||
channel.emit('notification:send',{
|
||||
mediator.emit('notification:send',{
|
||||
title: 'Woop',
|
||||
body: 'Woop woop',
|
||||
icon: 'gfx/icon.png'
|
||||
});
|
||||
|
||||
// Turn notifications on
|
||||
channel.emit('notification:on');
|
||||
mediator.emit('notification:on');
|
||||
|
||||
// Turn notifications off
|
||||
channel.emit('notification:off');
|
||||
mediator.emit('notification:off');
|
||||
|
||||
*/
|
||||
define(['mediator','win'],function (mediator, win){
|
||||
|
@ -26,8 +26,6 @@ define(['mediator','win'],function (mediator,win){
|
|||
blink_timer,
|
||||
interval,
|
||||
|
||||
channel = mediator(),
|
||||
|
||||
now = function () {
|
||||
return performance.now() || Date.now();
|
||||
},
|
||||
|
@ -104,9 +102,9 @@ define(['mediator','win'],function (mediator,win){
|
|||
|
||||
native_supported = (window.Notification !== undefined);
|
||||
|
||||
channel.on('notification:send',function(data) { notify(data.title,data.body,data.icon,true); });
|
||||
channel.on('notification:on',function() { on(); });
|
||||
channel.on('notification:off',function() { off(); });
|
||||
mediator.on('notification:send',function(data) { notify(data.title,data.body,data.icon,true); });
|
||||
mediator.on('notification:on',function() { on(); });
|
||||
mediator.on('notification:off',function() { off(); });
|
||||
|
||||
enableNative();
|
||||
|
||||
|
|
|
@ -12,14 +12,13 @@
|
|||
define(['mediator'],function (mediator){
|
||||
|
||||
var exports = {},
|
||||
channel = mediator(),
|
||||
|
||||
focusCallback = function() {
|
||||
channel.emit('window:focused');
|
||||
mediator.emit('window:focused');
|
||||
},
|
||||
|
||||
blurCallback = function() {
|
||||
channel.emit('window:blurred');
|
||||
mediator.emit('window:blurred');
|
||||
};
|
||||
|
||||
exports.setTitle = function(t) { document.title = t; },
|
||||
|
|
|
@ -1,41 +0,0 @@
|
|||
/*
|
||||
|
||||
Emits:
|
||||
'window:focused'
|
||||
'window:blurred'
|
||||
|
||||
Exports:
|
||||
title = window.getTitle();
|
||||
window.setTitle(title);
|
||||
|
||||
*/
|
||||
define(['mediator'],function (mediator){
|
||||
|
||||
var exports = {},
|
||||
channel = mediator(),
|
||||
|
||||
focusCallback = function() {
|
||||
channel.emit('window:focused');
|
||||
},
|
||||
|
||||
blurCallback = function() {
|
||||
channel.emit('window:blurred');
|
||||
};
|
||||
|
||||
exports.getTitle = function(t) { document.title = t; },
|
||||
exports.setTitle = function() { return document.title; };
|
||||
|
||||
// Keep track of document focus/blur
|
||||
if (window.addEventListener){
|
||||
// Normal browsers
|
||||
window.addEventListener("focus", focusCallback, true);
|
||||
window.addEventListener("blur", blurCallback, true);
|
||||
} else {
|
||||
// IE
|
||||
window.observe("focusin", focusCallback);
|
||||
window.observe("focusout", blurCallback);
|
||||
}
|
||||
|
||||
return exports;
|
||||
|
||||
});
|
Loading…
Reference in New Issue