mirror of
https://github.com/YunoHost-Apps/jappix_ynh.git
synced 2024-09-03 19:26:19 +02:00
190 lines
No EOL
4.9 KiB
JavaScript
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(); |