diff --git a/public/install.php b/public/install.php index 12ef831eb0..77fd763498 100644 --- a/public/install.php +++ b/public/install.php @@ -107,7 +107,7 @@ function boolIcon(bool $bool): string crossorigin="anonymous"> - + @@ -335,6 +335,6 @@ function boolIcon(bool $bool): string - + diff --git a/public/js/install.js b/public/js/install.js index 60cd64e6f5..83b671bea8 100644 --- a/public/js/install.js +++ b/public/js/install.js @@ -36,10 +36,34 @@ if (updateButton) { loading.style.display = 'block'; parent.parentNode.removeChild(parent); - get('/install.php?command=exec¶m=migrate&id=' + timestamp) - .then(function (result) { + const steps = [ + { + command: 'link', + description: 'Gerando symlinks' + }, { + command: 'migrate', + description: 'Executando migrações' + } + ]; + + let base = new Promise(function (resolve) { + return resolve(true); + }); + + for (let i = 0; i < steps.length; i++) { + const step = steps[i]; + + base = base.then(function () { + let url = '/install.php?command=exec¶m=' + step.command + '&id=' + timestamp; + + if (step.extra) { + url += '&extra=' + step.extra; + } + + return get(url); + }).then(function (result) { return new Promise(function (resolve, reject) { - const interval = setInterval(function() { + const interval = setInterval(function () { get('/install.php?command=consult&pid=' + result + '&id=' + timestamp) .then(function (result) { result = parseInt(result, 10); @@ -48,19 +72,24 @@ if (updateButton) { resolve(result); clearInterval(interval); } else if (result > 0) { - reject(); + reject(step); clearInterval(interval); } }); }, 1000); }); - }).then(function () { - alert('Atualização realizada com sucesso!'); - $.location.reload(true); - }).catch(function () { - alert('Ocorreu um erro ao atualizar sua instalação' + "\n" + 'Verifique o log em storage/logs para identificar o problema e tente novamente.'); - $.location.reload(true); }); + } + + base.then(function () { + alert('Atualização realizada com sucesso!'); + $.location.reload(true); + }); + + base.catch(function (error) { + alert('Ocorreu um erro ao atualizar sua instalação' + "\n" + 'Verifique o log em storage/logs para identificar o problema e tente novamente.'); + $.location.reload(true); + }); return false; });