diff --git a/extensions/package-manager/extend.php b/extensions/package-manager/extend.php index a56849684..2c87c807f 100755 --- a/extensions/package-manager/extend.php +++ b/extensions/package-manager/extend.php @@ -19,6 +19,8 @@ use Flarum\PackageManager\Exception\ExceptionHandler; use Flarum\PackageManager\Exception\MajorUpdateFailedException; use Flarum\PackageManager\Settings\LastUpdateCheck; use Flarum\PackageManager\Settings\LastUpdateRun; +use Illuminate\Contracts\Queue\Queue; +use Illuminate\Queue\SyncQueue; return [ (new Extend\Routes('api')) @@ -29,7 +31,8 @@ return [ ->post('/package-manager/why-not', 'package-manager.why-not', Api\Controller\WhyNotController::class) ->post('/package-manager/minor-update', 'package-manager.minor-update', Api\Controller\MinorUpdateController::class) ->post('/package-manager/major-update', 'package-manager.major-update', Api\Controller\MajorUpdateController::class) - ->post('/package-manager/global-update', 'package-manager.global-update', Api\Controller\GlobalUpdateController::class), + ->post('/package-manager/global-update', 'package-manager.global-update', Api\Controller\GlobalUpdateController::class) + ->get('/package-manager-tasks', 'package-manager.tasks.index', Api\Controller\ListTasksController::class), (new Extend\Frontend('admin')) ->css(__DIR__.'/less/admin.less') @@ -37,17 +40,20 @@ return [ ->content(function (Document $document) { $paths = resolve(Paths::class); - $document->payload['isRequiredDirectoriesWritable'] = is_writable($paths->vendor) + $document->payload['flarum-package-manager.writable_dirs'] = is_writable($paths->vendor) && is_writable($paths->storage.'/.composer') && is_writable($paths->base.'/composer.json') && is_writable($paths->base.'/composer.lock'); + + $document->payload['flarum-package-manager.using_sync_queue'] = resolve(Queue::class) instanceof SyncQueue; }), new Extend\Locales(__DIR__.'/locale'), (new Extend\Settings()) ->default(LastUpdateCheck::key(), json_encode(LastUpdateCheck::default())) - ->default(LastUpdateRun::key(), json_encode(LastUpdateRun::default())), + ->default(LastUpdateRun::key(), json_encode(LastUpdateRun::default())) + ->default('flarum-package-manager.queue_jobs', false), (new Extend\ServiceProvider) ->register(PackageManagerServiceProvider::class), diff --git a/extensions/package-manager/js/package.json b/extensions/package-manager/js/package.json index 6978f7a99..a1a5ef75d 100755 --- a/extensions/package-manager/js/package.json +++ b/extensions/package-manager/js/package.json @@ -1,17 +1,17 @@ { - "private": true, "name": "@flarum/package-manager", "version": "0.0.0", + "private": true, "prettier": "@flarum/prettier-config", "devDependencies": { - "prettier": "^2.5.1", - "flarum-webpack-config": "^2.0.0", - "webpack": "^5.65.0", - "webpack-cli": "^4.9.1", "@flarum/prettier-config": "^1.0.0", "flarum-tsconfig": "^1.0.2", + "flarum-webpack-config": "^2.0.0", + "prettier": "^2.5.1", "typescript": "^4.5.4", - "typescript-coverage-report": "^0.6.1" + "typescript-coverage-report": "^0.6.1", + "webpack": "^5.65.0", + "webpack-cli": "^4.9.1" }, "scripts": { "dev": "webpack --mode development --watch", @@ -21,9 +21,11 @@ "ci": "yarn install --immutable --immutable-cache", "analyze": "cross-env ANALYZER=true yarn run build", "clean-typings": "npx rimraf dist-typings && mkdir dist-typings", - "build-typings": "yarn run clean-typings && ([ -e src/@types ] && cp -r src/@types dist-typings/@types || true) && tsc && yarn run post-build-typings", + "build-typings": "yarn run clean-typings && tsc && [ -e src/@types ] && cp -r src/@types dist-typings/@types", "check-typings": "tsc --noEmit --emitDeclarationOnly false", - "check-typings-coverage": "typescript-coverage-report", - "post-build-typings": "find dist-typings -type f -name '*.d.ts' -print0 | xargs -0 sed -i 's,../src/@types,@types,g'" + "check-typings-coverage": "typescript-coverage-report" + }, + "dependencies": { + "pretty-bytes": "^6.0.0" } } diff --git a/extensions/package-manager/js/src/admin/components/ControlSection.tsx b/extensions/package-manager/js/src/admin/components/ControlSection.tsx new file mode 100644 index 000000000..8f296003f --- /dev/null +++ b/extensions/package-manager/js/src/admin/components/ControlSection.tsx @@ -0,0 +1,34 @@ +import app from 'flarum/admin/app'; +import Component from 'flarum/common/Component'; +import Alert from 'flarum/common/components/Alert'; + +import Installer from './Installer'; +import Updater from './Updater'; + +export default class ControlSection extends Component { + view() { + return ( +
{app.translator.trans('flarum-package-manager.admin.extensions.install_help', {
@@ -46,7 +51,7 @@ export default class Installer{app.translator.trans('flarum-package-manager.admin.sections.queue.title')}
+ {app.translator.trans('flarum-package-manager.admin.sections.queue.none')}
;
+ }
+
+ const columns = this.columns();
+
+ return (
+ <>
+
+
+
+
+
+ {columns.toArray().map((item, index) => (
+
+
+
+ {tasks.map((task, index) => (
+ {item.label}
+ ))}
+
+ {columns.toArray().map((item, index) => {
+ const { label, content, ...attrs } = item;
+
+ return (
+
+ ))}
+
+
+ {content(task)}
+
+ );
+ })}
+ $ composer {this.attrs.task.command()}
+
+
+ {this.attrs.task.output()}
+