chevereto-free/app/install/update/template/update.js

116 lines
4.2 KiB
JavaScript

$(document).ready(function(){
setInterval(function() {
var $el = $(".animated-ellipsis");
var ellipsis = $el.html();
ellipsis = ellipsis + ".";
if(ellipsis.length > 3) {
ellipsis = "";
}
$el.html(ellipsis);
}, 400);
// The auto-upgrade procedure
update.process();
});
var update = {
vars: {},
process: function(callback) { // S0: Check if update is needed
var _this = this;
_this.addLog(PF.fn._s("Installed version is v%s", vars.current_version));
$.ajax({
url: vars.url,
data: {action: "ask"}
})
.always(function(data, status, XHR) {
if(!XHR) {
_this.abort(PF.fn._s("Can't connect to %s", vars.url), 400);
return;
}
if(data.status_code == 200) {
_this.addLog(PF.fn._s("Last available release is v%s", data.software.current_version));
if(PF.fn.versionCompare(vars.current_version, data.software.current_version) == -1) { // Can update
_this.vars.target_version = data.software.current_version;
_this.addLog(PF.fn._s("Update needed, proceeding to download"));
_this.download(function() {
_this.extract(function() {
_this.install(); // yo dawg
});
});
} else {
$("h1").html(PF.fn._s("No update needed"));
_this.addLog(PF.fn._s("System files already up to date", vars.current_version));
_this.install();
}
}
});
},
download: function(callback) {
var _this = this;
_this.addLog(PF.fn._s("Starting v%s download", this.vars.target_version));
$.ajax({
url: vars.url,
data: {action: "download", version: _this.vars.target_version},
}).always(function(data, status, XHR) {
if(!XHR) {
_this.abort(PF.fn._s("Can't connect to %s", vars.url), 400);
return;
}
if(data.status_code == 200) {
_this.vars.target_filename = data.download.filename;
_this.addLog(PF.fn._s("Downloaded v%s, proceeding to extraction", _this.vars.target_version));
if(typeof callback == "function") {
callback();
}
} else {
_this.abort(data.responseJSON.error.message, 400);
}
});
},
extract: function(callback) {
var _this = this;
_this.addLog(PF.fn._s("Attempting to extract v%s", this.vars.target_version));
$.ajax({
url: vars.url,
data: {action: "extract", file: _this.vars.target_filename},
}).always(function(data, status, XHR) {
if(!XHR) {
_this.abort(PF.fn._s("Can't connect to %s", vars.url), 400);
return;
}
if(data.status_code == 200) {
_this.addLog(PF.fn._s("Extraction completed", _this.vars.target_version));
setTimeout(function() {
_this.addLog(PF.fn._s("Proceding to install the update", _this.vars.target_version));
if(typeof callback == "function") {
callback();
}
}, 500);
} else {
_this.abort(data.responseJSON.error.message, 400);
}
});
},
install: function() {
var _this = this;
setTimeout(function() {
window.location = PF.obj.config.base_url + "/install";
}, 2000);
},
addLog: function(message, code) {
if(!code) code = 200;
var $el = $("ul");
var d = PF.fn.getDateTime().substring(11);
var $event = $("<li/>", {
class: code != 200 ? 'color-red' : null,
text: d + ' ' + message
});
$el.prepend($event);
},
abort: function(message) {
$("h1").html(PF.fn._s("Update failed"));
if(message) {
this.addLog(message, 400);
}
}
};