SickGear/gui/slick/js/restart.js

86 lines
2.5 KiB
JavaScript
Raw Normal View History

/** @namespace $.SickGear.Root */
/** @namespace $.SickGear.Host */
/** @namespace $.SickGear.Port */
/** @namespace $.SickGear.UseHttps */
/** @namespace $.SickGear.PID */
/** @namespace data.msg */
var sgRoot = $.SickGear.Root,
browserUrl = window.location.protocol + '//' + window.location.host + sgRoot,
baseUrl = 'http' + ($.SickGear.UseHttps ? 's' : '') + '://' + $.SickGear.Host + ':'
+ (('' == sgRoot) ? $.SickGear.Port : location.port) + sgRoot,
isAliveUrl = sgRoot + '/home/is_alive/',
timeoutId;
$.SickGear.numRestartWaits = 0;
function is_alive() {
timeoutId = 0;
$.get(isAliveUrl, function(data) {
var resp = data.msg.toString();
if ('nope' == resp) {
// if initialising then just wait and try again
$('#shut_down_message').find('.spinner,.hide-yes').removeClass();
$('#restart_message').removeClass();
setTimeout(is_alive, 100);
} else if (/undefined/i.test($.SickGear.PID) || $.SickGear.PID == resp) {
// if this is before we've even shut down then just try again later
setTimeout(is_alive, 100);
} else {
// if we're ready to go then redirect to new url
$('#restart_message').find('.spinner,.hide-yes').removeClass();
$('#refresh_message').removeClass();
window.location = baseUrl + '/home/';
}
}, 'jsonp');
}
$(document).ready(function() {
is_alive();
//noinspection JSUnusedLocalSymbols
$('#shut_down_message').ajaxError(function(e, jqxhr, settings, exception) {
$.SickGear.numRestartWaits += 1;
$('#shut_down_message').find('.spinner,.hide-yes').removeClass();
$('#restart_message').removeClass();
isAliveUrl = baseUrl + '/home/is_alive/';
// if https is enabled or you are currently on https and the port or protocol changed just wait 5 seconds then redirect.
// This is because the ajax will fail if the cert is untrusted or the the http ajax request from https will fail because of mixed content error.
if ($.SickGear.UseHttps || 'https:' == window.location.protocol) {
if (browserUrl != baseUrl) {
timeoutId = 1;
setTimeout(function() {
$('#restart_message').find('.spinner,.hide-yes').removeClass();
$('#refresh_message').removeClass();
}, 3000);
setTimeout(function() {
window.location = baseUrl + '/home/'
}, 5000);
}
}
// if it is taking forever just give up
if (90 < $.SickGear.numRestartWaits) {
$('#restart_message').find('.spinner,.yes,.hide-no').removeClass();
$('#restart_fail_message').removeClass();
return;
}
if (0 == timeoutId) {
timeoutId = setTimeout(is_alive, 100);
}
});
});