mirror of
https://github.com/flarum/core.git
synced 2025-08-01 14:10:37 +02:00
feat: misc additions
- Detect extensions that didn't update between updates - Add composer why not command where approriate (when extension didn't update, when major update failed) - Detect incompatible extensions in major update failure and show the extensions in the frontend - Create last update run setting value which holds the state of the latest update runs - Other fixes
This commit is contained in:
474
extensions/package-manager/js/dist/admin.js
vendored
474
extensions/package-manager/js/dist/admin.js
vendored
@@ -101,6 +101,34 @@ __webpack_require__.r(__webpack_exports__);
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/@babel/runtime/helpers/esm/createClass.js":
|
||||
/*!****************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/createClass.js ***!
|
||||
\****************************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _createClass; });
|
||||
function _defineProperties(target, props) {
|
||||
for (var i = 0; i < props.length; i++) {
|
||||
var descriptor = props[i];
|
||||
descriptor.enumerable = descriptor.enumerable || false;
|
||||
descriptor.configurable = true;
|
||||
if ("value" in descriptor) descriptor.writable = true;
|
||||
Object.defineProperty(target, descriptor.key, descriptor);
|
||||
}
|
||||
}
|
||||
|
||||
function _createClass(Constructor, protoProps, staticProps) {
|
||||
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
||||
if (staticProps) _defineProperties(Constructor, staticProps);
|
||||
return Constructor;
|
||||
}
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js":
|
||||
/*!******************************************************************!*\
|
||||
!*** ./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js ***!
|
||||
@@ -140,6 +168,114 @@ function _setPrototypeOf(o, p) {
|
||||
return _setPrototypeOf(o, p);
|
||||
}
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/admin/components/ExtensionItem.tsx":
|
||||
/*!************************************************!*\
|
||||
!*** ./src/admin/components/ExtensionItem.tsx ***!
|
||||
\************************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return ExtensionItem; });
|
||||
/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js");
|
||||
/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app");
|
||||
/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/Component */ "flarum/common/Component");
|
||||
/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/utils/classList */ "flarum/common/utils/classList");
|
||||
/* harmony import */ var flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_3__);
|
||||
/* harmony import */ var flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/helpers/icon */ "flarum/common/helpers/icon");
|
||||
/* harmony import */ var flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_4__);
|
||||
/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip");
|
||||
/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5__);
|
||||
/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button");
|
||||
/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6__);
|
||||
/* harmony import */ var _WhyNotModal__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./WhyNotModal */ "./src/admin/components/WhyNotModal.tsx");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* @todo fix in core
|
||||
*/
|
||||
|
||||
var ExtensionItem = /*#__PURE__*/function (_Component) {
|
||||
Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(ExtensionItem, _Component);
|
||||
|
||||
function ExtensionItem() {
|
||||
return _Component.apply(this, arguments) || this;
|
||||
}
|
||||
|
||||
var _proto = ExtensionItem.prototype;
|
||||
|
||||
_proto.view = function view(vnode) {
|
||||
var _this$attrs = this.attrs,
|
||||
extension = _this$attrs.extension,
|
||||
updates = _this$attrs.updates,
|
||||
onClickUpdate = _this$attrs.onClickUpdate,
|
||||
whyNotWarning = _this$attrs.whyNotWarning,
|
||||
isCore = _this$attrs.isCore,
|
||||
isDanger = _this$attrs.isDanger;
|
||||
return m("div", {
|
||||
className: flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_3___default()({
|
||||
'PackageManager-extension': true,
|
||||
'PackageManager-extension--core': isCore,
|
||||
'PackageManager-extension--danger': isDanger
|
||||
})
|
||||
}, m("div", {
|
||||
className: "PackageManager-extension-icon ExtensionIcon",
|
||||
style: extension.icon
|
||||
}, extension.icon ? flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_4___default()(extension.icon.name) : ''), m("div", {
|
||||
className: "PackageManager-extension-info"
|
||||
}, m("div", {
|
||||
className: "PackageManager-extension-name"
|
||||
}, extension.extra['flarum-extension'].title), m("div", {
|
||||
className: "PackageManager-extension-version"
|
||||
}, m("span", {
|
||||
className: "PackageManager-extension-version-current"
|
||||
}, this.version(extension.version)), updates['latest-minor'] ? m("span", {
|
||||
className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--minor"
|
||||
}, this.version(updates['latest-minor'])) : null, updates['latest-major'] && !isCore ? m("span", {
|
||||
className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--major"
|
||||
}, this.version(updates['latest-major'])) : null)), m("div", {
|
||||
className: "PackageManager-extension-controls"
|
||||
}, onClickUpdate ? m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default.a, {
|
||||
text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.update')
|
||||
}, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6___default.a, {
|
||||
icon: "fas fa-arrow-alt-circle-up",
|
||||
className: "Button Button--icon Button--flat",
|
||||
onclick: onClickUpdate,
|
||||
"aria-label": flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.update')
|
||||
})) : null, whyNotWarning ? m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_5___default.a, {
|
||||
text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating')
|
||||
}, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_6___default.a, {
|
||||
icon: "fas fa-exclamation-circle",
|
||||
className: "Button Button--icon Button--flat Button--danger",
|
||||
onclick: function onclick() {
|
||||
return flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(_WhyNotModal__WEBPACK_IMPORTED_MODULE_7__["default"], {
|
||||
"package": extension.name
|
||||
});
|
||||
},
|
||||
"aria-label": flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating')
|
||||
})) : null));
|
||||
};
|
||||
|
||||
_proto.version = function version(v) {
|
||||
return 'v' + v.replace('v', '');
|
||||
};
|
||||
|
||||
return ExtensionItem;
|
||||
}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a);
|
||||
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/admin/components/Installer.tsx":
|
||||
@@ -284,6 +420,13 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/admin/components/LoadingModal */ "flarum/admin/components/LoadingModal");
|
||||
/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_5__);
|
||||
/* harmony import */ var _utils_errorHandler__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/errorHandler */ "./src/admin/utils/errorHandler.ts");
|
||||
/* harmony import */ var flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/common/components/Alert */ "flarum/common/components/Alert");
|
||||
/* harmony import */ var flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_7__);
|
||||
/* harmony import */ var _WhyNotModal__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./WhyNotModal */ "./src/admin/components/WhyNotModal.tsx");
|
||||
/* harmony import */ var _ExtensionItem__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./ExtensionItem */ "./src/admin/components/ExtensionItem.tsx");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -304,14 +447,22 @@ var MajorUpdater = /*#__PURE__*/function (_Component) {
|
||||
|
||||
_this = _Component.call.apply(_Component, [this].concat(args)) || this;
|
||||
_this.isLoading = null;
|
||||
_this.updateState = void 0;
|
||||
return _this;
|
||||
}
|
||||
|
||||
var _proto = MajorUpdater.prototype;
|
||||
|
||||
_proto.oninit = function oninit(vnode) {
|
||||
_Component.prototype.oninit.call(this, vnode);
|
||||
|
||||
this.updateState = this.attrs.updateState;
|
||||
};
|
||||
|
||||
_proto.view = function view(vnode) {
|
||||
// @todo move Form-group--danger class to core for reuse
|
||||
return m("div", {
|
||||
className: "Form-group PackageManager-majorUpdate"
|
||||
className: "Form-group Form-group--danger PackageManager-majorUpdate"
|
||||
}, m("img", {
|
||||
alt: "flarum logo",
|
||||
src: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('baseUrl') + '/assets/extensions/flarum-package-manager/flarum.svg'
|
||||
@@ -328,10 +479,34 @@ var MajorUpdater = /*#__PURE__*/function (_Component) {
|
||||
icon: "fas fa-vial",
|
||||
onclick: this.update.bind(this, true)
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.dry_run'))), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, {
|
||||
className: "Button",
|
||||
className: "Button Button--danger",
|
||||
icon: "fas fa-play",
|
||||
onclick: this.update.bind(this, false)
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.update'))));
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.update'))), this.updateState.incompatibleExtensions.length ? m("div", {
|
||||
className: "PackageManager-majorUpdate-incompatibleExtensions PackageManager-extensions-grid"
|
||||
}, this.updateState.incompatibleExtensions.map(function (extension) {
|
||||
return m(_ExtensionItem__WEBPACK_IMPORTED_MODULE_9__["default"], {
|
||||
extension: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.extensions[extension.replace('flarum-', '').replace('flarum-ext-', '').replace('/', '-')],
|
||||
updates: {},
|
||||
onClickUpdate: null,
|
||||
isDanger: true
|
||||
});
|
||||
})) : null, this.updateState.status === 'failure' ? m(flarum_common_components_Alert__WEBPACK_IMPORTED_MODULE_7___default.a, {
|
||||
type: "error",
|
||||
className: "PackageManager-majorUpdate-failure",
|
||||
dismissible: false,
|
||||
controls: [m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_3___default.a, {
|
||||
className: "Button Button--text PackageManager-majorUpdate-failure-details",
|
||||
icon: "fas fa-question-circle",
|
||||
onclick: function onclick() {
|
||||
return flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(_WhyNotModal__WEBPACK_IMPORTED_MODULE_8__["default"], {
|
||||
"package": 'flarum/core'
|
||||
});
|
||||
}
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.failure.why'))]
|
||||
}, m("p", {
|
||||
className: "PackageManager-majorUpdate-failure-desc"
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.major_updater.failure.desc'))) : null);
|
||||
};
|
||||
|
||||
_proto.update = function update(dryRun) {
|
||||
@@ -353,6 +528,12 @@ var MajorUpdater = /*#__PURE__*/function (_Component) {
|
||||
type: 'success'
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.update_successful'));
|
||||
window.location.reload();
|
||||
})["catch"](function (e) {
|
||||
var _e$response, _e$response$errors, _e$response$errors$po;
|
||||
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.close();
|
||||
_this2.updateState.status = 'failure';
|
||||
_this2.updateState.incompatibleExtensions = (_e$response = e.response) == null ? void 0 : (_e$response$errors = _e$response.errors) == null ? void 0 : (_e$response$errors$po = _e$response$errors.pop()) == null ? void 0 : _e$response$errors$po.incompatible_extensions;
|
||||
})["finally"](function () {
|
||||
_this2.isLoading = null;
|
||||
m.redraw();
|
||||
@@ -376,28 +557,23 @@ var MajorUpdater = /*#__PURE__*/function (_Component) {
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return Updater; });
|
||||
/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js");
|
||||
/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app");
|
||||
/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/Component */ "flarum/common/Component");
|
||||
/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/helpers/icon */ "flarum/common/helpers/icon");
|
||||
/* harmony import */ var flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_3__);
|
||||
/* harmony import */ var _babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/createClass */ "./node_modules/@babel/runtime/helpers/esm/createClass.js");
|
||||
/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js");
|
||||
/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app");
|
||||
/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/Component */ "flarum/common/Component");
|
||||
/* harmony import */ var flarum_common_Component__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_Component__WEBPACK_IMPORTED_MODULE_3__);
|
||||
/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! flarum/common/components/Button */ "flarum/common/components/Button");
|
||||
/* harmony import */ var flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4__);
|
||||
/* harmony import */ var flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! flarum/common/helpers/humanTime */ "flarum/common/helpers/humanTime");
|
||||
/* harmony import */ var flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5__);
|
||||
/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! flarum/admin/components/LoadingModal */ "flarum/admin/components/LoadingModal");
|
||||
/* harmony import */ var flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6__);
|
||||
/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! flarum/common/components/Tooltip */ "flarum/common/components/Tooltip");
|
||||
/* harmony import */ var flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_7__);
|
||||
/* harmony import */ var _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/errorHandler */ "./src/admin/utils/errorHandler.ts");
|
||||
/* harmony import */ var flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! flarum/common/utils/classList */ "flarum/common/utils/classList");
|
||||
/* harmony import */ var flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_9__);
|
||||
/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator");
|
||||
/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10__);
|
||||
/* harmony import */ var _MajorUpdater__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./MajorUpdater */ "./src/admin/components/MajorUpdater.tsx");
|
||||
|
||||
/* harmony import */ var _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/errorHandler */ "./src/admin/utils/errorHandler.ts");
|
||||
/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator");
|
||||
/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_8__);
|
||||
/* harmony import */ var _MajorUpdater__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./MajorUpdater */ "./src/admin/components/MajorUpdater.tsx");
|
||||
/* harmony import */ var _ExtensionItem__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ExtensionItem */ "./src/admin/components/ExtensionItem.tsx");
|
||||
|
||||
|
||||
|
||||
@@ -411,7 +587,7 @@ __webpack_require__.r(__webpack_exports__);
|
||||
|
||||
|
||||
var Updater = /*#__PURE__*/function (_Component) {
|
||||
Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(Updater, _Component);
|
||||
Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(Updater, _Component);
|
||||
|
||||
function Updater() {
|
||||
var _this;
|
||||
@@ -422,8 +598,8 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
|
||||
_this = _Component.call.apply(_Component, [this].concat(args)) || this;
|
||||
_this.isLoading = null;
|
||||
_this.lastUpdateCheck = flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.lastUpdateCheck || {};
|
||||
_this.packageUpdates = {};
|
||||
_this.lastUpdateCheck = JSON.parse(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.settings['flarum-package-manager.last_update_check']);
|
||||
return _this;
|
||||
}
|
||||
|
||||
@@ -439,35 +615,35 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
|
||||
var extensions = this.getExtensionUpdates();
|
||||
var coreUpdate = this.getCoreUpdate();
|
||||
var core = null;
|
||||
var core;
|
||||
|
||||
if (coreUpdate) {
|
||||
core = {
|
||||
id: "flarum-core",
|
||||
version: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.settings.version,
|
||||
id: 'flarum-core',
|
||||
name: 'flarum/core',
|
||||
version: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.settings.version,
|
||||
icon: {
|
||||
backgroundImage: "url(" + flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('baseUrl') + "/assets/extensions/flarum-package-manager/flarum.svg"
|
||||
backgroundImage: "url(" + flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('baseUrl') + "/assets/extensions/flarum-package-manager/flarum.svg"
|
||||
},
|
||||
extra: {
|
||||
'flarum-extension': {
|
||||
title: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.flarum')
|
||||
title: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.flarum')
|
||||
}
|
||||
}
|
||||
};
|
||||
this.packageUpdates['flarum-core'] = coreUpdate;
|
||||
}
|
||||
|
||||
return [m("div", {
|
||||
className: "Form-group"
|
||||
}, m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.updater_title')), m("p", {
|
||||
}, m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.updater_title')), m("p", {
|
||||
className: "helpText"
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.updater_help')), Object.keys(this.lastUpdateCheck).length ? m("p", {
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.updater_help')), ((_this$lastUpdateCheck = this.lastUpdateCheck) == null ? void 0 : _this$lastUpdateCheck.checkedAt) && m("p", {
|
||||
className: "PackageManager-lastUpdatedAt"
|
||||
}, m("span", {
|
||||
className: "PackageManager-lastUpdatedAt-label"
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')), m("span", {
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')), m("span", {
|
||||
className: "PackageManager-lastUpdatedAt-value"
|
||||
}, flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5___default()((_this$lastUpdateCheck = this.lastUpdateCheck) == null ? void 0 : _this$lastUpdateCheck.checkedAt))) : null, m("div", {
|
||||
}, flarum_common_helpers_humanTime__WEBPACK_IMPORTED_MODULE_5___default()(this.lastUpdateCheck.checkedAt))), m("div", {
|
||||
className: "PackageManager-updaterControls"
|
||||
}, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, {
|
||||
className: "Button",
|
||||
@@ -475,66 +651,37 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
onclick: this.checkForUpdates.bind(this),
|
||||
loading: this.isLoading === 'check',
|
||||
disabled: this.isLoading !== null && this.isLoading !== 'check'
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.check_for_updates')), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, {
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.check_for_updates')), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, {
|
||||
className: "Button",
|
||||
icon: "fas fa-play",
|
||||
onclick: this.updateGlobally.bind(this),
|
||||
loading: this.isLoading === 'global-update',
|
||||
disabled: this.isLoading !== null && this.isLoading !== 'global-update'
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.run_global_update'))), this.isLoading !== null ? m("div", {
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.run_global_update'))), this.isLoading !== null ? m("div", {
|
||||
className: "PackageManager-extensions"
|
||||
}, m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_10___default.a, null)) : extensions.length || core ? m("div", {
|
||||
}, m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_8___default.a, null)) : extensions.length || core ? m("div", {
|
||||
className: "PackageManager-extensions"
|
||||
}, m("div", {
|
||||
className: "PackageManager-extensions-grid"
|
||||
}, core ? this.extensionItem(core, true) : null, extensions.map(function (extension) {
|
||||
return _this2.extensionItem(extension);
|
||||
}))) : null), coreUpdate && coreUpdate['latest-major'] ? m(_MajorUpdater__WEBPACK_IMPORTED_MODULE_11__["default"], {
|
||||
coreUpdate: coreUpdate
|
||||
}, core ? m(_ExtensionItem__WEBPACK_IMPORTED_MODULE_10__["default"], {
|
||||
extension: core,
|
||||
updates: coreUpdate,
|
||||
isCore: true,
|
||||
onClickUpdate: this.updateCoreMinor.bind(this),
|
||||
whyNotWarning: this.lastUpdateRun.limitedPackages().includes('flarum/core')
|
||||
}) : null, extensions.map(function (extension) {
|
||||
return m(_ExtensionItem__WEBPACK_IMPORTED_MODULE_10__["default"], {
|
||||
extension: extension,
|
||||
updates: _this2.packageUpdates[extension.id],
|
||||
onClickUpdate: _this2.updateExtension.bind(_this2, extension),
|
||||
whyNotWarning: _this2.lastUpdateRun.limitedPackages().includes(extension.name)
|
||||
});
|
||||
}))) : null), coreUpdate && coreUpdate['latest-major'] ? m(_MajorUpdater__WEBPACK_IMPORTED_MODULE_9__["default"], {
|
||||
coreUpdate: coreUpdate,
|
||||
updateState: this.lastUpdateRun.major
|
||||
}) : null];
|
||||
};
|
||||
|
||||
_proto.extensionItem = function extensionItem(extension, isCore) {
|
||||
if (isCore === void 0) {
|
||||
isCore = false;
|
||||
}
|
||||
|
||||
return m("div", {
|
||||
className: flarum_common_utils_classList__WEBPACK_IMPORTED_MODULE_9___default()({
|
||||
'PackageManager-extension': true,
|
||||
'PackageManager-extension--core': isCore
|
||||
})
|
||||
}, m("div", {
|
||||
className: "PackageManager-extension-icon ExtensionIcon",
|
||||
style: extension.icon
|
||||
}, extension.icon ? flarum_common_helpers_icon__WEBPACK_IMPORTED_MODULE_3___default()(extension.icon.name) : ''), m("div", {
|
||||
className: "PackageManager-extension-info"
|
||||
}, m("div", {
|
||||
className: "PackageManager-extension-name"
|
||||
}, extension.extra['flarum-extension'].title), m("div", {
|
||||
className: "PackageManager-extension-version"
|
||||
}, m("span", {
|
||||
className: "PackageManager-extension-version-current"
|
||||
}, this.version(extension.version)), this.packageUpdates[extension.id]['latest-minor'] ? m("span", {
|
||||
className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--minor"
|
||||
}, this.version(this.packageUpdates[extension.id]['latest-minor'])) : null, this.packageUpdates[extension.id]['latest-major'] && !isCore ? m("span", {
|
||||
className: "PackageManager-extension-version-latest PackageManager-extension-version-latest--major"
|
||||
}, this.version(this.packageUpdates[extension.id]['latest-major'])) : null)), m("div", {
|
||||
className: "PackageManager-extension-controls"
|
||||
}, m(flarum_common_components_Tooltip__WEBPACK_IMPORTED_MODULE_7___default.a, {
|
||||
text: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.update')
|
||||
}, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, {
|
||||
icon: "fas fa-arrow-alt-circle-up",
|
||||
className: "Button Button--icon Button--flat",
|
||||
onclick: isCore ? this.updateCoreMinor.bind(this) : this.updateExtension.bind(this, extension),
|
||||
"aria-label": flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.update')
|
||||
}))));
|
||||
};
|
||||
|
||||
_proto.version = function version(v) {
|
||||
return 'v' + v.replace('v', '');
|
||||
};
|
||||
|
||||
_proto.getExtensionUpdates = function getExtensionUpdates() {
|
||||
var _this$lastUpdateCheck2,
|
||||
_this$lastUpdateCheck3,
|
||||
@@ -542,7 +689,8 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
_this3 = this;
|
||||
|
||||
(_this$lastUpdateCheck2 = this.lastUpdateCheck) == null ? void 0 : (_this$lastUpdateCheck3 = _this$lastUpdateCheck2.updates) == null ? void 0 : (_this$lastUpdateCheck4 = _this$lastUpdateCheck3.installed) == null ? void 0 : _this$lastUpdateCheck4.filter(function (composerPackage) {
|
||||
var extension = flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')];
|
||||
var id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');
|
||||
var extension = flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.extensions[id];
|
||||
var safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);
|
||||
|
||||
if (extension && safeToUpdate) {
|
||||
@@ -551,7 +699,7 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
|
||||
return extension && safeToUpdate;
|
||||
});
|
||||
return Object.values(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.extensions).filter(function (extension) {
|
||||
return Object.values(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.extensions).filter(function (extension) {
|
||||
return _this3.packageUpdates[extension.id];
|
||||
});
|
||||
};
|
||||
@@ -568,10 +716,10 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
var _this4 = this;
|
||||
|
||||
this.isLoading = 'check';
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.request({
|
||||
method: 'POST',
|
||||
url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/check-for-updates",
|
||||
errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"]
|
||||
url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('apiUrl') + "/package-manager/check-for-updates",
|
||||
errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__["default"]
|
||||
}).then(function (response) {
|
||||
_this4.lastUpdateCheck = response;
|
||||
})["finally"](function () {
|
||||
@@ -583,17 +731,17 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
_proto.updateCoreMinor = function updateCoreMinor() {
|
||||
var _this5 = this;
|
||||
|
||||
if (confirm(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.minor_update_confirmation.content'))) {
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a);
|
||||
if (confirm(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.minor_update_confirmation.content'))) {
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a);
|
||||
this.isLoading = 'minor-update';
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.request({
|
||||
method: 'POST',
|
||||
url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/minor-update",
|
||||
errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"]
|
||||
url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('apiUrl') + "/package-manager/minor-update",
|
||||
errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__["default"]
|
||||
}).then(function () {
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.alerts.show({
|
||||
type: 'success'
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.update_successful'));
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.update_successful'));
|
||||
window.location.reload();
|
||||
})["finally"](function () {
|
||||
_this5.isLoading = null;
|
||||
@@ -605,16 +753,16 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
_proto.updateExtension = function updateExtension(extension) {
|
||||
var _this6 = this;
|
||||
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a);
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a);
|
||||
this.isLoading = 'extension-update';
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.request({
|
||||
method: 'PATCH',
|
||||
url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/extensions/" + extension.id,
|
||||
errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"]
|
||||
url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('apiUrl') + "/package-manager/extensions/" + extension.id,
|
||||
errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__["default"]
|
||||
}).then(function () {
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.alerts.show({
|
||||
type: 'success'
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.extensions.successful_update', {
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.extensions.successful_update', {
|
||||
extension: extension.extra['flarum-extension'].title
|
||||
}));
|
||||
window.location.reload();
|
||||
@@ -627,16 +775,16 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
_proto.updateGlobally = function updateGlobally() {
|
||||
var _this7 = this;
|
||||
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a);
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.modal.show(flarum_admin_components_LoadingModal__WEBPACK_IMPORTED_MODULE_6___default.a);
|
||||
this.isLoading = 'global-update';
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.request({
|
||||
method: 'POST',
|
||||
url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/global-update",
|
||||
errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_8__["default"]
|
||||
url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.forum.attribute('apiUrl') + "/package-manager/global-update",
|
||||
errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_7__["default"]
|
||||
}).then(function () {
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.alerts.show({
|
||||
type: 'success'
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.updater.global_update_successful'));
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.translator.trans('flarum-package-manager.admin.updater.global_update_successful'));
|
||||
window.location.reload();
|
||||
})["finally"](function () {
|
||||
_this7.isLoading = null;
|
||||
@@ -644,8 +792,111 @@ var Updater = /*#__PURE__*/function (_Component) {
|
||||
});
|
||||
};
|
||||
|
||||
Object(_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_0__["default"])(Updater, [{
|
||||
key: "lastUpdateRun",
|
||||
get: function get() {
|
||||
var lastUpdateRun = JSON.parse(flarum_admin_app__WEBPACK_IMPORTED_MODULE_2___default.a.data.settings['flarum-package-manager.last_update_run']);
|
||||
|
||||
lastUpdateRun.limitedPackages = function () {
|
||||
return [].concat(lastUpdateRun.major.limitedPackages, lastUpdateRun.minor.limitedPackages, lastUpdateRun.global.limitedPackages);
|
||||
};
|
||||
|
||||
return lastUpdateRun;
|
||||
}
|
||||
}]);
|
||||
|
||||
return Updater;
|
||||
}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a);
|
||||
}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_3___default.a);
|
||||
|
||||
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "./src/admin/components/WhyNotModal.tsx":
|
||||
/*!**********************************************!*\
|
||||
!*** ./src/admin/components/WhyNotModal.tsx ***!
|
||||
\**********************************************/
|
||||
/*! exports provided: default */
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
__webpack_require__.r(__webpack_exports__);
|
||||
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return WhyNotModal; });
|
||||
/* harmony import */ var _babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/inheritsLoose */ "./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js");
|
||||
/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! flarum/admin/app */ "flarum/admin/app");
|
||||
/* harmony import */ var flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1__);
|
||||
/* harmony import */ var flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! flarum/common/components/Modal */ "flarum/common/components/Modal");
|
||||
/* harmony import */ var flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2__);
|
||||
/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! flarum/common/components/LoadingIndicator */ "flarum/common/components/LoadingIndicator");
|
||||
/* harmony import */ var flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3__);
|
||||
/* harmony import */ var _utils_errorHandler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/errorHandler */ "./src/admin/utils/errorHandler.ts");
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
var WhyNotModal = /*#__PURE__*/function (_Modal) {
|
||||
Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(WhyNotModal, _Modal);
|
||||
|
||||
function WhyNotModal() {
|
||||
var _this;
|
||||
|
||||
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
||||
args[_key] = arguments[_key];
|
||||
}
|
||||
|
||||
_this = _Modal.call.apply(_Modal, [this].concat(args)) || this;
|
||||
_this.loading = true;
|
||||
_this.whyNot = null;
|
||||
return _this;
|
||||
}
|
||||
|
||||
var _proto = WhyNotModal.prototype;
|
||||
|
||||
_proto.className = function className() {
|
||||
return 'Modal--large WhyNotModal';
|
||||
};
|
||||
|
||||
_proto.title = function title() {
|
||||
return flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('flarum-package-manager.admin.why_not_modal.title');
|
||||
};
|
||||
|
||||
_proto.oncreate = function oncreate(vnode) {
|
||||
_Modal.prototype.oncreate.call(this, vnode);
|
||||
|
||||
this.requestWhyNot();
|
||||
};
|
||||
|
||||
_proto.content = function content() {
|
||||
return m("div", {
|
||||
className: "Modal-body"
|
||||
}, this.loading ? m(flarum_common_components_LoadingIndicator__WEBPACK_IMPORTED_MODULE_3___default.a, null) : m("pre", {
|
||||
className: "WhyNotModal-contents"
|
||||
}, this.whyNot));
|
||||
};
|
||||
|
||||
_proto.requestWhyNot = function requestWhyNot() {
|
||||
var _this2 = this;
|
||||
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.request({
|
||||
method: 'POST',
|
||||
url: flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.forum.attribute('apiUrl') + "/package-manager/why-not",
|
||||
body: {
|
||||
data: {
|
||||
"package": this.attrs["package"]
|
||||
}
|
||||
},
|
||||
errorHandler: _utils_errorHandler__WEBPACK_IMPORTED_MODULE_4__["default"]
|
||||
}).then(function (response) {
|
||||
_this2.loading = false;
|
||||
_this2.whyNot = response.data.whyNot;
|
||||
m.redraw();
|
||||
});
|
||||
};
|
||||
|
||||
return WhyNotModal;
|
||||
}(flarum_common_components_Modal__WEBPACK_IMPORTED_MODULE_2___default.a);
|
||||
|
||||
|
||||
|
||||
@@ -766,6 +1017,10 @@ __webpack_require__.r(__webpack_exports__);
|
||||
type: 'error'
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans("flarum-package-manager.admin.exceptions.guessed_cause." + error.guessed_cause));
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.modal.close();
|
||||
} else {
|
||||
flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.alerts.show({
|
||||
type: 'error'
|
||||
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_0___default.a.translator.trans('flarum-package-manager.admin.exceptions.composer_command_failure'));
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -875,6 +1130,17 @@ module.exports = flarum.core.compat['common/components/LoadingIndicator'];
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "flarum/common/components/Modal":
|
||||
/*!****************************************************************!*\
|
||||
!*** external "flarum.core.compat['common/components/Modal']" ***!
|
||||
\****************************************************************/
|
||||
/*! no static exports found */
|
||||
/***/ (function(module, exports) {
|
||||
|
||||
module.exports = flarum.core.compat['common/components/Modal'];
|
||||
|
||||
/***/ }),
|
||||
|
||||
/***/ "flarum/common/components/Tooltip":
|
||||
/*!******************************************************************!*\
|
||||
!*** external "flarum.core.compat['common/components/Tooltip']" ***!
|
||||
|
File diff suppressed because one or more lines are too long
@@ -4,9 +4,9 @@
|
||||
"private": true,
|
||||
"prettier": "@flarum/prettier-config",
|
||||
"dependencies": {
|
||||
"flarum-webpack-config": "^1.0.0",
|
||||
"flarum-tsconfig": "^1.0.0",
|
||||
"@flarum/prettier-config": "^1.0.0",
|
||||
"flarum-tsconfig": "^1.0.0",
|
||||
"flarum-webpack-config": "^1.0.0",
|
||||
"webpack": "^4.26.0",
|
||||
"webpack-cli": "^3.0.7"
|
||||
},
|
||||
|
@@ -0,0 +1,89 @@
|
||||
import Mithril from 'mithril';
|
||||
import app from 'flarum/admin/app';
|
||||
import Component, { ComponentAttrs } from 'flarum/common/Component';
|
||||
import classList from 'flarum/common/utils/classList';
|
||||
import icon from 'flarum/common/helpers/icon';
|
||||
import Tooltip from 'flarum/common/components/Tooltip';
|
||||
import Button from 'flarum/common/components/Button';
|
||||
import { Extension as BaseExtension } from 'flarum/admin/AdminApplication';
|
||||
import { UpdatedPackage } from './Updater';
|
||||
import WhyNotModal from './WhyNotModal';
|
||||
|
||||
/*
|
||||
* @todo fix in core
|
||||
*/
|
||||
export type Extension = BaseExtension & {
|
||||
name: string;
|
||||
};
|
||||
|
||||
export interface ExtensionItemAttrs extends ComponentAttrs {
|
||||
extension: Extension;
|
||||
updates: UpdatedPackage;
|
||||
onClickUpdate: CallableFunction;
|
||||
whyNotWarning?: boolean;
|
||||
isCore?: boolean;
|
||||
updatable?: boolean;
|
||||
isDanger?: boolean;
|
||||
}
|
||||
|
||||
export default class ExtensionItem<Attrs extends ExtensionItemAttrs = ExtensionItemAttrs> extends Component<Attrs> {
|
||||
view(vnode: Mithril.Vnode<Attrs, this>): Mithril.Children {
|
||||
const { extension, updates, onClickUpdate, whyNotWarning, isCore, isDanger } = this.attrs;
|
||||
|
||||
return (
|
||||
<div
|
||||
className={classList({
|
||||
'PackageManager-extension': true,
|
||||
'PackageManager-extension--core': isCore,
|
||||
'PackageManager-extension--danger': isDanger,
|
||||
})}
|
||||
>
|
||||
<div className="PackageManager-extension-icon ExtensionIcon" style={extension.icon}>
|
||||
{extension.icon ? icon(extension.icon.name) : ''}
|
||||
</div>
|
||||
<div className="PackageManager-extension-info">
|
||||
<div className="PackageManager-extension-name">{extension.extra['flarum-extension'].title}</div>
|
||||
<div className="PackageManager-extension-version">
|
||||
<span className="PackageManager-extension-version-current">{this.version(extension.version)}</span>
|
||||
{updates['latest-minor'] ? (
|
||||
<span className="PackageManager-extension-version-latest PackageManager-extension-version-latest--minor">
|
||||
{this.version(updates['latest-minor']!)}
|
||||
</span>
|
||||
) : null}
|
||||
{updates['latest-major'] && !isCore ? (
|
||||
<span className="PackageManager-extension-version-latest PackageManager-extension-version-latest--major">
|
||||
{this.version(updates['latest-major']!)}
|
||||
</span>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
<div className="PackageManager-extension-controls">
|
||||
{onClickUpdate ? (
|
||||
<Tooltip text={app.translator.trans('flarum-package-manager.admin.extensions.update')}>
|
||||
<Button
|
||||
icon="fas fa-arrow-alt-circle-up"
|
||||
className="Button Button--icon Button--flat"
|
||||
onclick={onClickUpdate}
|
||||
aria-label={app.translator.trans('flarum-package-manager.admin.extensions.update')}
|
||||
/>
|
||||
</Tooltip>
|
||||
) : null}
|
||||
{whyNotWarning ? (
|
||||
<Tooltip text={app.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating')}>
|
||||
<Button
|
||||
icon="fas fa-exclamation-circle"
|
||||
className="Button Button--icon Button--flat Button--danger"
|
||||
onclick={() => app.modal.show(WhyNotModal, { package: extension.name })}
|
||||
aria-label={app.translator.trans('flarum-package-manager.admin.extensions.check_why_it_failed_updating')}
|
||||
/>
|
||||
</Tooltip>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
private version(v: string): string {
|
||||
return 'v' + v.replace('v', '');
|
||||
}
|
||||
}
|
@@ -3,20 +3,33 @@ import Component, { ComponentAttrs } from 'flarum/common/Component';
|
||||
import Mithril from 'mithril';
|
||||
import Button from 'flarum/common/components/Button';
|
||||
import Tooltip from 'flarum/common/components/Tooltip';
|
||||
import { UpdatedPackage } from './Updater';
|
||||
import { UpdatedPackage, UpdateState } from './Updater';
|
||||
import LoadingModal from 'flarum/admin/components/LoadingModal';
|
||||
import errorHandler from '../utils/errorHandler';
|
||||
import Alert from 'flarum/common/components/Alert';
|
||||
import WhyNotModal from './WhyNotModal';
|
||||
import RequestError from 'flarum/common/utils/RequestError';
|
||||
import ExtensionItem, { Extension } from './ExtensionItem';
|
||||
|
||||
interface MajorUpdaterAttrs extends ComponentAttrs {
|
||||
coreUpdate: UpdatedPackage;
|
||||
updateState: UpdateState;
|
||||
}
|
||||
|
||||
export default class MajorUpdater<T extends MajorUpdaterAttrs = MajorUpdaterAttrs> extends Component<T> {
|
||||
isLoading: string | null = null;
|
||||
updateState!: UpdateState;
|
||||
|
||||
view(vnode: Mithril.Vnode<ComponentAttrs, this>): Mithril.Children {
|
||||
oninit(vnode: Mithril.Vnode<T, this>) {
|
||||
super.oninit(vnode);
|
||||
|
||||
this.updateState = this.attrs.updateState;
|
||||
}
|
||||
|
||||
view(vnode: Mithril.Vnode<T, this>): Mithril.Children {
|
||||
// @todo move Form-group--danger class to core for reuse
|
||||
return (
|
||||
<div className="Form-group PackageManager-majorUpdate">
|
||||
<div className="Form-group Form-group--danger PackageManager-majorUpdate">
|
||||
<img alt="flarum logo" src={app.forum.attribute('baseUrl') + '/assets/extensions/flarum-package-manager/flarum.svg'} />
|
||||
<label>{app.translator.trans('flarum-package-manager.admin.major_updater.title', { version: this.attrs.coreUpdate['latest-major'] })}</label>
|
||||
<p className="helpText">{app.translator.trans('flarum-package-manager.admin.major_updater.description')}</p>
|
||||
@@ -26,10 +39,42 @@ export default class MajorUpdater<T extends MajorUpdaterAttrs = MajorUpdaterAttr
|
||||
{app.translator.trans('flarum-package-manager.admin.major_updater.dry_run')}
|
||||
</Button>
|
||||
</Tooltip>
|
||||
<Button className="Button" icon="fas fa-play" onclick={this.update.bind(this, false)}>
|
||||
<Button className="Button Button--danger" icon="fas fa-play" onclick={this.update.bind(this, false)}>
|
||||
{app.translator.trans('flarum-package-manager.admin.major_updater.update')}
|
||||
</Button>
|
||||
</div>
|
||||
{this.updateState.incompatibleExtensions.length ? (
|
||||
<div className="PackageManager-majorUpdate-incompatibleExtensions PackageManager-extensions-grid">
|
||||
{this.updateState.incompatibleExtensions.map((extension: string) => (
|
||||
<ExtensionItem
|
||||
extension={app.data.extensions[extension.replace('flarum-', '').replace('flarum-ext-', '').replace('/', '-')]}
|
||||
updates={{}}
|
||||
onClickUpdate={null}
|
||||
isDanger={true}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
) : null}
|
||||
{this.updateState.status === 'failure' ? (
|
||||
<Alert
|
||||
type="error"
|
||||
className="PackageManager-majorUpdate-failure"
|
||||
dismissible={false}
|
||||
controls={[
|
||||
<Button
|
||||
className="Button Button--text PackageManager-majorUpdate-failure-details"
|
||||
icon="fas fa-question-circle"
|
||||
onclick={() => app.modal.show(WhyNotModal, { package: 'flarum/core' })}
|
||||
>
|
||||
{app.translator.trans('flarum-package-manager.admin.major_updater.failure.why')}
|
||||
</Button>,
|
||||
]}
|
||||
>
|
||||
<p className="PackageManager-majorUpdate-failure-desc">
|
||||
{app.translator.trans('flarum-package-manager.admin.major_updater.failure.desc')}
|
||||
</p>
|
||||
</Alert>
|
||||
) : null}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
@@ -51,6 +96,11 @@ export default class MajorUpdater<T extends MajorUpdaterAttrs = MajorUpdaterAttr
|
||||
app.alerts.show({ type: 'success' }, app.translator.trans('flarum-package-manager.admin.update_successful'));
|
||||
window.location.reload();
|
||||
})
|
||||
.catch((e: RequestError) => {
|
||||
app.modal.close();
|
||||
this.updateState.status = 'failure';
|
||||
this.updateState.incompatibleExtensions = e.response?.errors?.pop()?.incompatible_extensions as string[];
|
||||
})
|
||||
.finally(() => {
|
||||
this.isLoading = null;
|
||||
m.redraw();
|
||||
|
@@ -1,16 +1,13 @@
|
||||
import Mithril from "mithril";
|
||||
import Mithril from 'mithril';
|
||||
import app from 'flarum/admin/app';
|
||||
import Component from 'flarum/common/Component';
|
||||
import icon from 'flarum/common/helpers/icon';
|
||||
import Button from 'flarum/common/components/Button';
|
||||
import humanTime from 'flarum/common/helpers/humanTime';
|
||||
import LoadingModal from 'flarum/admin/components/LoadingModal';
|
||||
import Tooltip from 'flarum/common/components/Tooltip';
|
||||
import errorHandler from '../utils/errorHandler';
|
||||
import classList from 'flarum/common/utils/classList';
|
||||
import LoadingIndicator from 'flarum/common/components/LoadingIndicator';
|
||||
import MajorUpdater from './MajorUpdater';
|
||||
import {Extension} from "flarum/admin/AdminApplication";
|
||||
import ExtensionItem, { Extension } from './ExtensionItem';
|
||||
|
||||
export type UpdatedPackage = {
|
||||
name: string;
|
||||
@@ -27,27 +24,54 @@ export type ComposerUpdates = {
|
||||
};
|
||||
|
||||
export type LastUpdateCheck = {
|
||||
checkedAt: Date;
|
||||
checkedAt: Date | null;
|
||||
updates: ComposerUpdates;
|
||||
};
|
||||
|
||||
type UpdateType = 'major' | 'minor' | 'global';
|
||||
type UpdateStatus = 'success' | 'failure' | null;
|
||||
export type UpdateState = {
|
||||
ranAt: Date | null;
|
||||
status: UpdateStatus;
|
||||
limitedPackages: string[];
|
||||
incompatibleExtensions: string[];
|
||||
};
|
||||
|
||||
export type LastUpdateRun = {
|
||||
[key in UpdateType]: UpdateState;
|
||||
} & {
|
||||
limitedPackages: () => string[];
|
||||
};
|
||||
|
||||
export default class Updater<Attrs> extends Component<Attrs> {
|
||||
isLoading: string | null = null;
|
||||
lastUpdateCheck: LastUpdateCheck = (app.data.lastUpdateCheck as LastUpdateCheck) || {};
|
||||
packageUpdates: Record<string, UpdatedPackage> = {};
|
||||
lastUpdateCheck: LastUpdateCheck = JSON.parse(app.data.settings['flarum-package-manager.last_update_check']) as LastUpdateCheck;
|
||||
get lastUpdateRun(): LastUpdateRun {
|
||||
const lastUpdateRun = JSON.parse(app.data.settings['flarum-package-manager.last_update_run']) as LastUpdateRun;
|
||||
|
||||
lastUpdateRun.limitedPackages = () => [
|
||||
...lastUpdateRun.major.limitedPackages,
|
||||
...lastUpdateRun.minor.limitedPackages,
|
||||
...lastUpdateRun.global.limitedPackages,
|
||||
];
|
||||
|
||||
return lastUpdateRun;
|
||||
}
|
||||
|
||||
oninit(vnode: Mithril.Vnode<Attrs, this>) {
|
||||
super.oninit(vnode);
|
||||
}
|
||||
|
||||
view() {
|
||||
const extensions: any = this.getExtensionUpdates();
|
||||
const coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate();
|
||||
let core: any = null;
|
||||
const extensions = this.getExtensionUpdates();
|
||||
let coreUpdate: UpdatedPackage | undefined = this.getCoreUpdate();
|
||||
let core: any;
|
||||
|
||||
if (coreUpdate) {
|
||||
core = {
|
||||
id: "flarum-core",
|
||||
id: 'flarum-core',
|
||||
name: 'flarum/core',
|
||||
version: app.data.settings.version,
|
||||
icon: {
|
||||
backgroundImage: `url(${app.forum.attribute('baseUrl')}/assets/extensions/flarum-package-manager/flarum.svg`,
|
||||
@@ -55,25 +79,23 @@ export default class Updater<Attrs> extends Component<Attrs> {
|
||||
extra: {
|
||||
'flarum-extension': {
|
||||
title: app.translator.trans('flarum-package-manager.admin.updater.flarum'),
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
this.packageUpdates['flarum-core'] = coreUpdate;
|
||||
}
|
||||
|
||||
return [
|
||||
<div className="Form-group">
|
||||
<label>{app.translator.trans('flarum-package-manager.admin.updater.updater_title')}</label>
|
||||
<p className="helpText">{app.translator.trans('flarum-package-manager.admin.updater.updater_help')}</p>
|
||||
{Object.keys(this.lastUpdateCheck).length ? (
|
||||
{this.lastUpdateCheck?.checkedAt && (
|
||||
<p className="PackageManager-lastUpdatedAt">
|
||||
<span className="PackageManager-lastUpdatedAt-label">
|
||||
{app.translator.trans('flarum-package-manager.admin.updater.last_update_checked_at')}
|
||||
</span>
|
||||
<span className="PackageManager-lastUpdatedAt-value">{humanTime(this.lastUpdateCheck?.checkedAt)}</span>
|
||||
<span className="PackageManager-lastUpdatedAt-value">{humanTime(this.lastUpdateCheck.checkedAt)}</span>
|
||||
</p>
|
||||
) : null}
|
||||
)}
|
||||
<div className="PackageManager-updaterControls">
|
||||
<Button
|
||||
className="Button"
|
||||
@@ -101,64 +123,36 @@ export default class Updater<Attrs> extends Component<Attrs> {
|
||||
) : extensions.length || core ? (
|
||||
<div className="PackageManager-extensions">
|
||||
<div className="PackageManager-extensions-grid">
|
||||
{core ? this.extensionItem(core, true) : null}
|
||||
{extensions.map((extension: any) => this.extensionItem(extension))}
|
||||
{core ? (
|
||||
<ExtensionItem
|
||||
extension={core}
|
||||
updates={coreUpdate}
|
||||
isCore={true}
|
||||
onClickUpdate={this.updateCoreMinor.bind(this)}
|
||||
whyNotWarning={this.lastUpdateRun.limitedPackages().includes('flarum/core')}
|
||||
/>
|
||||
) : null}
|
||||
{extensions.map((extension: Extension) => (
|
||||
<ExtensionItem
|
||||
extension={extension}
|
||||
updates={this.packageUpdates[extension.id]}
|
||||
onClickUpdate={this.updateExtension.bind(this, extension)}
|
||||
whyNotWarning={this.lastUpdateRun.limitedPackages().includes(extension.name)}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
) : null}
|
||||
</div>,
|
||||
coreUpdate && coreUpdate['latest-major'] ? <MajorUpdater coreUpdate={coreUpdate} /> : null,
|
||||
coreUpdate && coreUpdate['latest-major'] ? <MajorUpdater coreUpdate={coreUpdate} updateState={this.lastUpdateRun.major} /> : null,
|
||||
];
|
||||
}
|
||||
|
||||
extensionItem(extension: Extension, isCore: boolean = false) {
|
||||
return (
|
||||
<div
|
||||
className={classList({
|
||||
'PackageManager-extension': true,
|
||||
'PackageManager-extension--core': isCore,
|
||||
})}
|
||||
>
|
||||
<div className="PackageManager-extension-icon ExtensionIcon" style={extension.icon}>
|
||||
{extension.icon ? icon(extension.icon.name) : ''}
|
||||
</div>
|
||||
<div className="PackageManager-extension-info">
|
||||
<div className="PackageManager-extension-name">{extension.extra['flarum-extension'].title}</div>
|
||||
<div className="PackageManager-extension-version">
|
||||
<span className="PackageManager-extension-version-current">{this.version(extension.version)}</span>
|
||||
{this.packageUpdates[extension.id]['latest-minor'] ? (
|
||||
<span className="PackageManager-extension-version-latest PackageManager-extension-version-latest--minor">
|
||||
{this.version(this.packageUpdates[extension.id]['latest-minor']!)}
|
||||
</span>
|
||||
) : null}
|
||||
{this.packageUpdates[extension.id]['latest-major'] && !isCore ? (
|
||||
<span className="PackageManager-extension-version-latest PackageManager-extension-version-latest--major">
|
||||
{this.version(this.packageUpdates[extension.id]['latest-major']!)}
|
||||
</span>
|
||||
) : null}
|
||||
</div>
|
||||
</div>
|
||||
<div className="PackageManager-extension-controls">
|
||||
<Tooltip text={app.translator.trans('flarum-package-manager.admin.extensions.update')}>
|
||||
<Button
|
||||
icon="fas fa-arrow-alt-circle-up"
|
||||
className="Button Button--icon Button--flat"
|
||||
onclick={isCore ? this.updateCoreMinor.bind(this) : this.updateExtension.bind(this, extension)}
|
||||
aria-label={app.translator.trans('flarum-package-manager.admin.extensions.update')}
|
||||
/>
|
||||
</Tooltip>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
version(v: string) {
|
||||
return 'v' + v.replace('v', '');
|
||||
}
|
||||
|
||||
getExtensionUpdates() {
|
||||
getExtensionUpdates(): Extension[] {
|
||||
this.lastUpdateCheck?.updates?.installed?.filter((composerPackage: UpdatedPackage) => {
|
||||
const extension = app.data.extensions[composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '')];
|
||||
const id = composerPackage.name.replace('/', '-').replace(/(flarum-ext-)|(flarum-)/, '');
|
||||
|
||||
const extension = app.data.extensions[id];
|
||||
const safeToUpdate = ['semver-safe-update', 'update-possible'].includes(composerPackage['latest-status']);
|
||||
|
||||
if (extension && safeToUpdate) {
|
||||
@@ -168,7 +162,7 @@ export default class Updater<Attrs> extends Component<Attrs> {
|
||||
return extension && safeToUpdate;
|
||||
});
|
||||
|
||||
return Object.values(app.data.extensions).filter((extension: any) => this.packageUpdates[extension.id]);
|
||||
return (Object.values(app.data.extensions) as Extension[]).filter((extension: Extension) => this.packageUpdates[extension.id]);
|
||||
}
|
||||
|
||||
getCoreUpdate(): UpdatedPackage | undefined {
|
||||
|
@@ -0,0 +1,51 @@
|
||||
import app from 'flarum/admin/app';
|
||||
import Mithril from 'mithril';
|
||||
import Modal, { IInternalModalAttrs } from 'flarum/common/components/Modal';
|
||||
import LoadingIndicator from 'flarum/common/components/LoadingIndicator';
|
||||
import errorHandler from '../utils/errorHandler';
|
||||
|
||||
export interface WhyNotModalAttrs extends IInternalModalAttrs {
|
||||
package: string;
|
||||
}
|
||||
|
||||
export default class WhyNotModal<Attrs extends WhyNotModalAttrs = WhyNotModalAttrs> extends Modal<Attrs> {
|
||||
loading: boolean = true;
|
||||
whyNot: string | null = null;
|
||||
|
||||
className() {
|
||||
return 'Modal--large WhyNotModal';
|
||||
}
|
||||
|
||||
title() {
|
||||
return app.translator.trans('flarum-package-manager.admin.why_not_modal.title');
|
||||
}
|
||||
|
||||
oncreate(vnode: Mithril.VnodeDOM<Attrs, this>) {
|
||||
super.oncreate(vnode);
|
||||
|
||||
this.requestWhyNot();
|
||||
}
|
||||
|
||||
content() {
|
||||
return <div className="Modal-body">{this.loading ? <LoadingIndicator /> : <pre className="WhyNotModal-contents">{this.whyNot}</pre>}</div>;
|
||||
}
|
||||
|
||||
requestWhyNot(): void {
|
||||
app
|
||||
.request({
|
||||
method: 'POST',
|
||||
url: `${app.forum.attribute('apiUrl')}/package-manager/why-not`,
|
||||
body: {
|
||||
data: {
|
||||
package: this.attrs.package,
|
||||
},
|
||||
},
|
||||
errorHandler,
|
||||
})
|
||||
.then((response: any) => {
|
||||
this.loading = false;
|
||||
this.whyNot = response.data.whyNot;
|
||||
m.redraw();
|
||||
});
|
||||
}
|
||||
}
|
@@ -10,8 +10,10 @@ export default function (e: any) {
|
||||
switch (error.code) {
|
||||
case 'composer_command_failure':
|
||||
if (error.guessed_cause) {
|
||||
app.alerts.show({type: 'error'}, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`))
|
||||
app.alerts.show({ type: 'error' }, app.translator.trans(`flarum-package-manager.admin.exceptions.guessed_cause.${error.guessed_cause}`));
|
||||
app.modal.close();
|
||||
} else {
|
||||
app.alerts.show({ type: 'error' }, app.translator.trans('flarum-package-manager.admin.exceptions.composer_command_failure'));
|
||||
}
|
||||
break;
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user