1
0
mirror of https://github.com/flarum/core.git synced 2025-08-11 19:04:29 +02:00

Add Update Checker

This commit is contained in:
SychO9
2021-09-25 13:59:59 +01:00
parent 40e0a9672b
commit 26e09d1e9d
11 changed files with 473 additions and 4 deletions

View File

@@ -313,7 +313,7 @@ var Installer = /*#__PURE__*/function (_Component) {
});
}
}).then(function (response) {
var extensionId = response.data.attributes.id;
var extensionId = response.id;
flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.alerts.show({
type: 'success'
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.extensions.successful_install', {
@@ -332,6 +332,144 @@ var Installer = /*#__PURE__*/function (_Component) {
/***/ }),
/***/ "./src/admin/components/Updater.tsx":
/*!******************************************!*\
!*** ./src/admin/components/Updater.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 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 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__);
var Updater = /*#__PURE__*/function (_Component) {
Object(_babel_runtime_helpers_esm_inheritsLoose__WEBPACK_IMPORTED_MODULE_0__["default"])(Updater, _Component);
function Updater() {
var _this;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
_this = _Component.call.apply(_Component, [this].concat(args)) || this;
_this.isLoading = false;
_this.lastUpdateCheck = flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.lastUpdateCheck || {};
return _this;
}
var _proto = Updater.prototype;
_proto.oninit = function oninit(vnode) {
_Component.prototype.oninit.call(this, vnode);
};
_proto.view = function view() {
var _this$lastUpdateCheck;
var extensions = this.getExtensionUpdates(); // @TODO catch `flarum/core` updates and display them differently, since it is the CORE and not an extension.
return m("div", {
className: "Form-group"
}, m("label", null, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_title')), m("p", {
className: "helpText"
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.updater_help')), m("p", {
className: "PackageManager-lastUpdatedAt"
}, m("span", {
className: "PackageManager-lastUpdatedAt-label"
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-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))), m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, {
className: "Button",
icon: "fas fa-sync-alt",
onclick: this.checkForUpdates.bind(this),
loading: this.isLoading
}, flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.translator.trans('sycho-package-manager.admin.updater.check_for_updates')), extensions.length ? m("div", {
className: "PackageManager-extensions"
}, m("div", {
className: "PackageManager-extensions-grid"
}, extensions.map(function (extension) {
return m("div", {
className: "PackageManager-extension"
}, 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"
}, extension.version), m("span", {
className: "PackageManager-extension-version-latest Label"
}, extension.newPackageUpdate.latest))), m("div", {
className: "PackageManager-extension-controls"
}, m(flarum_common_components_Button__WEBPACK_IMPORTED_MODULE_4___default.a, {
icon: "fas fa-arrow-alt-circle-up",
className: "Button Button--icon Button--flat"
})));
}))) : null);
};
_proto.getExtensionUpdates = function getExtensionUpdates() {
var _this$lastUpdateCheck2, _this$lastUpdateCheck3, _this$lastUpdateCheck4;
var updates = (_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 safeToUpdate = composerPackage['latest-status'] === 'semver-safe-update';
if (extension && safeToUpdate) {
extension.newPackageUpdate = composerPackage;
}
return extension && safeToUpdate;
});
return Object.values(flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.data.extensions).filter(function (extension) {
return extension.newPackageUpdate;
});
};
_proto.checkForUpdates = function checkForUpdates() {
var _this2 = this;
this.isLoading = true;
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/check-for-updates"
}).then(function (response) {
_this2.isLoading = false;
_this2.lastUpdateCheck = response;
m.redraw();
});
};
return Updater;
}(flarum_common_Component__WEBPACK_IMPORTED_MODULE_2___default.a);
/***/ }),
/***/ "./src/admin/index.js":
@@ -356,6 +494,8 @@ __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 _components_Installer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/Installer */ "./src/admin/components/Installer.tsx");
/* harmony import */ var _components_Updater__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/Updater */ "./src/admin/components/Updater.tsx");
@@ -377,6 +517,10 @@ flarum_admin_app__WEBPACK_IMPORTED_MODULE_1___default.a.initializers.add('sycho-
if (app.data.isRequiredDirectoriesWritable) {
return m(_components_Installer__WEBPACK_IMPORTED_MODULE_6__["default"], null);
}
}).registerSetting(function () {
if (app.data.isRequiredDirectoriesWritable) {
return m(_components_Updater__WEBPACK_IMPORTED_MODULE_7__["default"], null);
}
});
Object(flarum_common_extend__WEBPACK_IMPORTED_MODULE_0__["extend"])(flarum_admin_components_ExtensionPage__WEBPACK_IMPORTED_MODULE_3___default.a.prototype, 'topItems', function (items) {
var _this = this;
@@ -492,6 +636,28 @@ module.exports = flarum.core.compat['common/extend'];
/***/ }),
/***/ "flarum/common/helpers/humanTime":
/*!*****************************************************************!*\
!*** external "flarum.core.compat['common/helpers/humanTime']" ***!
\*****************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = flarum.core.compat['common/helpers/humanTime'];
/***/ }),
/***/ "flarum/common/helpers/icon":
/*!************************************************************!*\
!*** external "flarum.core.compat['common/helpers/icon']" ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = flarum.core.compat['common/helpers/icon'];
/***/ }),
/***/ "flarum/common/utils/Stream":
/*!************************************************************!*\
!*** external "flarum.core.compat['common/utils/Stream']" ***!

File diff suppressed because one or more lines are too long