1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/jappix_ynh.git synced 2024-09-03 19:26:19 +02:00
jappix_ynh/source/app/javascripts/anonymous.js
2014-04-08 20:14:28 +02:00

190 lines
No EOL
4.9 KiB
JavaScript

/*
Jappix - An open social platform
These are the anonymous mode JS script for Jappix
-------------------------------------------------
License: AGPL
Authors: Valérian Saliou, LinkMauve
*/
// Bundle
var Anonymous = (function () {
/**
* Alias of this
* @private
*/
var self = {};
/**
* Connected to an anonymous session
* @public
* @return {undefined}
*/
self.connected = function() {
try {
Console.info('Jappix (anonymous) is now connected.');
// Connected marker
Connection.connected = true;
Connection.current_session = true;
Connection.reconnect_try = 0;
Connection.reconnect_timer = 0;
// Not resumed?
if(!Connection.resume) {
// Create the app
Talk.create();
// Send our first presence
Presence.sendFirst('');
// Set last activity stamp
DateUtils.last_activity = DateUtils.getTimeStamp();
// Create the new groupchat
Chat.checkCreate(Common.generateXID(ANONYMOUS_ROOM, 'groupchat'), 'groupchat');
// Remove some nasty elements for the anonymous mode
$('.tools-mucadmin, .tools-add').remove();
}
// Resumed
else {
// Send again our presence
Presence.sendActions();
// Change the title
Interface.updateTitle();
}
// Remove the waiting icon
Interface.removeGeneralWait();
} catch(e) {
Console.error('Anonymous.connected', e);
}
};
/**
* Disconnected from an anonymous session
* @public
* @return {undefined}
*/
self.disconnected = function() {
try {
Console.info('Jappix (anonymous) is now disconnected.');
} catch(e) {
Console.error('Anonymous.disconnected', e);
}
};
/**
* Logins to a anonymous account
* @public
* @param {string} server
* @return {boolean}
*/
self.login = function(server) {
try {
if(Common.hasWebSocket()) {
// WebSocket supported & configured
con = new JSJaCWebSocketConnection({
httpbase: HOST_WEBSOCKET
});
} else {
var httpbase = (HOST_BOSH_MAIN || HOST_BOSH);
// Check BOSH origin
BOSH_SAME_ORIGIN = Origin.isSame(httpbase);
// We create the new http-binding connection
con = new JSJaCHttpBindingConnection({
httpbase: httpbase
});
}
// And we handle everything that happen
con.registerHandler('message', Message.handle);
con.registerHandler('presence', Presence.handle);
con.registerHandler('iq', IQ.handle);
con.registerHandler('onconnect', self.connected);
con.registerHandler('onerror', Errors.handle);
con.registerHandler('ondisconnect', self.disconnected);
// We set the anonymous connection parameters
oArgs = {};
oArgs.domain = server;
oArgs.authtype = 'saslanon';
oArgs.resource = JAPPIX_RESOURCE + ' Anonymous (' + (new Date()).getTime() + ')';
oArgs.secure = true;
oArgs.xmllang = XML_LANG;
// We connect !
con.connect(oArgs);
// Change the page title
Interface.title('wait');
} catch(e) {
Console.error('Anonymous.login', e);
// Reset Jappix
self.disconnected();
// Open an unknown error
Board.openThisError(2);
} finally {
return false;
}
};
/**
* Plugin launcher
* @public
* @return {undefined}
*/
self.launch = function() {
try {
$(document).ready(function() {
Console.info('Anonymous mode detected, connecting...');
// We add the login wait div
Interface.showGeneralWait();
// Get the vars
if(XMPPLinks.links_var.r)
ANONYMOUS_ROOM = XMPPLinks.links_var.r;
if(XMPPLinks.links_var.n)
ANONYMOUS_NICK = XMPPLinks.links_var.n;
// Fire the login action
self.login(HOST_ANONYMOUS);
});
} catch(e) {
Console.error('Anonymous.launch', e);
}
};
/**
* Return class scope
*/
return self;
})();
Anonymous.launch();