yet more upgrade flow fixes 3

This commit is contained in:
Andy Miller
2025-10-16 15:47:33 -06:00
parent 532274b480
commit b23940fb10
3 changed files with 59 additions and 71 deletions

View File

@@ -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.', [

View File

@@ -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) {

View File

@@ -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",