telegram_bots/static/js/examples/examples.session.timeout.js
2019-01-11 22:16:02 +03:00

106 lines
2.1 KiB
JavaScript

/*
Name: Pages / Session Timeout - Examples
Written by: Okler Themes - (http://www.okler.net)
Theme Version: 2.1.1
*/
(function($) {
'use strict';
var SessionTimeout = {
options: {
keepAliveUrl: '',
alertOn: 15000, // ms
timeoutOn: 20000 // ms
},
alertTimer: null,
timeoutTimer: null,
initialize: function() {
this
.start()
.setup();
},
start: function() {
var _self = this;
this.alertTimer = setTimeout(function() {
_self.onAlert();
}, this.options.alertOn );
this.timeoutTimer = setTimeout(function() {
_self.onTimeout();
}, this.options.timeoutOn );
return this;
},
// bind success callback for all ajax requests
setup: function() {
var _self = this;
// if server returns successfuly,
// then the session is renewed.
// thats why we reset here the counter
$( document ).ajaxSuccess(function() {
_self.reset();
});
return this;
},
reset: function() {
clearTimeout(this.alertTimer);
clearTimeout(this.timeoutTimer);
this.start();
return this;
},
keepAlive: function() {
// we don't have session on demo,
// so the code above prevent a request to be made
// in your project, please remove the next 3 lines of code
if ( !this.options.keepAliveUrl ) {
this.reset();
return;
}
var _self = this;
$.post( this.options.keepAliveUrl, function( data ) {
_self.reset();
});
},
// ------------------------------------------------------------------------
// CUSTOMIZE HERE
// ------------------------------------------------------------------------
onAlert: function() {
// if you want to show some warning
// TODO: remove this confirm (it breaks the logic and it's ugly)
var renew = confirm( 'Your session is about to expire, do you want to renew?' );
if ( renew ) {
this.keepAlive();
}
// if you want session to not expire
// this.keepAlive();
},
onTimeout: function() {
self.location.href = 'pages-signin.html';
}
};
$(function() {
SessionTimeout.initialize();
});
}).apply(this, [jQuery]);