mirror of
https://github.com/getgrav/grav-plugin-admin.git
synced 2025-10-26 00:36:31 +02:00
yet more upgrade flow fixes 3
This commit is contained in:
@@ -225,6 +225,14 @@ class SafeUpgradeManager
|
||||
return $this->errorResult($e->getMessage());
|
||||
}
|
||||
|
||||
if (defined('Monolog\\Logger::API') && \Monolog\Logger::API < 3) {
|
||||
class_exists(\Monolog\Logger::class);
|
||||
class_exists(\Monolog\Handler\AbstractHandler::class);
|
||||
class_exists(\Monolog\Handler\AbstractProcessingHandler::class);
|
||||
class_exists(\Monolog\Handler\StreamHandler::class);
|
||||
class_exists(\Monolog\Formatter\LineFormatter::class);
|
||||
}
|
||||
|
||||
$preflight = $safeUpgrade->preflight();
|
||||
if (!empty($preflight['plugins_pending'])) {
|
||||
return $this->errorResult('Plugins and/or themes require updates before upgrading Grav.', [
|
||||
|
||||
@@ -51,7 +51,6 @@ export default class SafeUpgrade {
|
||||
this.statusRequest = null;
|
||||
this.isPolling = false;
|
||||
this.active = false;
|
||||
this.progressFile = `${config.base_url_relative}/user/data/upgrades/safe-upgrade-progress.json`;
|
||||
|
||||
this.registerEvents();
|
||||
}
|
||||
@@ -431,59 +430,49 @@ export default class SafeUpgrade {
|
||||
|
||||
let shouldContinue = true;
|
||||
|
||||
console.debug('[SafeUpgrade] poll status file');
|
||||
console.debug('[SafeUpgrade] poll status');
|
||||
|
||||
const url = `${this.progressFile}?_=${Date.now()}`;
|
||||
this.statusRequest = request(this.urls.status, (response) => {
|
||||
console.debug('[SafeUpgrade] status response', response);
|
||||
|
||||
this.statusRequest = fetch(url, {
|
||||
credentials: 'same-origin',
|
||||
cache: 'no-store',
|
||||
headers: {
|
||||
Accept: 'application/json'
|
||||
}
|
||||
})
|
||||
.then((resp) => {
|
||||
if (!resp.ok) {
|
||||
throw new Error(`HTTP ${resp.status}`);
|
||||
}
|
||||
|
||||
return resp.json();
|
||||
})
|
||||
.then((data) => {
|
||||
nextStage = data.stage || null;
|
||||
console.debug('[SafeUpgrade] status data', data);
|
||||
this.renderProgress(data);
|
||||
|
||||
if (nextStage === 'installing' || nextStage === 'finalizing' || nextStage === 'complete') {
|
||||
shouldContinue = false;
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
console.warn('[SafeUpgrade] status fetch failed', err);
|
||||
nextStage = 'error';
|
||||
if (response.status === 'error') {
|
||||
if (!silent) {
|
||||
this.renderProgress({
|
||||
stage: 'error',
|
||||
message: err.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.'),
|
||||
message: response.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.'),
|
||||
percent: null
|
||||
});
|
||||
}
|
||||
})
|
||||
.finally(() => {
|
||||
this.statusRequest = null;
|
||||
nextStage = 'error';
|
||||
return;
|
||||
}
|
||||
|
||||
if (!this.isPolling) {
|
||||
return;
|
||||
}
|
||||
const data = response.data || {};
|
||||
nextStage = data.stage || null;
|
||||
this.renderProgress(data);
|
||||
|
||||
if (nextStage === 'complete' || nextStage === 'error') {
|
||||
this.stopPolling();
|
||||
} else if (shouldContinue) {
|
||||
this.schedulePoll();
|
||||
} else {
|
||||
this.stopPolling();
|
||||
}
|
||||
});
|
||||
if (nextStage === 'installing' || nextStage === 'finalizing' || nextStage === 'complete') {
|
||||
shouldContinue = false;
|
||||
}
|
||||
});
|
||||
|
||||
const finalize = () => {
|
||||
this.statusRequest = null;
|
||||
|
||||
if (!this.isPolling) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (nextStage === 'complete' || nextStage === 'error') {
|
||||
this.stopPolling();
|
||||
} else if (shouldContinue) {
|
||||
this.schedulePoll();
|
||||
} else {
|
||||
this.stopPolling();
|
||||
}
|
||||
};
|
||||
|
||||
this.statusRequest.then(finalize, finalize);
|
||||
}
|
||||
|
||||
renderProgress(data) {
|
||||
|
||||
45
themes/grav/js/admin.min.js
vendored
45
themes/grav/js/admin.min.js
vendored
@@ -4605,7 +4605,6 @@ var SafeUpgrade = /*#__PURE__*/function () {
|
||||
this.statusRequest = null;
|
||||
this.isPolling = false;
|
||||
this.active = false;
|
||||
this.progressFile = "".concat(external_GravAdmin_namespaceObject.config.base_url_relative, "/user/data/upgrades/safe-upgrade-progress.json");
|
||||
this.registerEvents();
|
||||
}
|
||||
return safe_upgrade_createClass(SafeUpgrade, [{
|
||||
@@ -4902,37 +4901,28 @@ var SafeUpgrade = /*#__PURE__*/function () {
|
||||
this.pollTimer = null;
|
||||
var nextStage = null;
|
||||
var shouldContinue = true;
|
||||
console.debug('[SafeUpgrade] poll status file');
|
||||
var url = "".concat(this.progressFile, "?_=").concat(Date.now());
|
||||
this.statusRequest = fetch(url, {
|
||||
credentials: 'same-origin',
|
||||
cache: 'no-store',
|
||||
headers: {
|
||||
Accept: 'application/json'
|
||||
console.debug('[SafeUpgrade] poll status');
|
||||
this.statusRequest = utils_request(this.urls.status, function (response) {
|
||||
console.debug('[SafeUpgrade] status response', response);
|
||||
if (response.status === 'error') {
|
||||
if (!silent) {
|
||||
_this6.renderProgress({
|
||||
stage: 'error',
|
||||
message: response.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.'),
|
||||
percent: null
|
||||
});
|
||||
}
|
||||
nextStage = 'error';
|
||||
return;
|
||||
}
|
||||
}).then(function (resp) {
|
||||
if (!resp.ok) {
|
||||
throw new Error("HTTP ".concat(resp.status));
|
||||
}
|
||||
return resp.json();
|
||||
}).then(function (data) {
|
||||
var data = response.data || {};
|
||||
nextStage = data.stage || null;
|
||||
console.debug('[SafeUpgrade] status data', data);
|
||||
_this6.renderProgress(data);
|
||||
if (nextStage === 'installing' || nextStage === 'finalizing' || nextStage === 'complete') {
|
||||
shouldContinue = false;
|
||||
}
|
||||
})["catch"](function (err) {
|
||||
console.warn('[SafeUpgrade] status fetch failed', err);
|
||||
nextStage = 'error';
|
||||
if (!silent) {
|
||||
_this6.renderProgress({
|
||||
stage: 'error',
|
||||
message: err.message || t('SAFE_UPGRADE_GENERIC_ERROR', 'Safe upgrade could not complete. See Grav logs for details.'),
|
||||
percent: null
|
||||
});
|
||||
}
|
||||
})["finally"](function () {
|
||||
});
|
||||
var finalize = function finalize() {
|
||||
_this6.statusRequest = null;
|
||||
if (!_this6.isPolling) {
|
||||
return;
|
||||
@@ -4944,7 +4934,8 @@ var SafeUpgrade = /*#__PURE__*/function () {
|
||||
} else {
|
||||
_this6.stopPolling();
|
||||
}
|
||||
});
|
||||
};
|
||||
this.statusRequest.then(finalize, finalize);
|
||||
}
|
||||
}, {
|
||||
key: "renderProgress",
|
||||
|
||||
Reference in New Issue
Block a user