From c1754af74a5ec79ca0c6f84bceaec8b116c6a08d Mon Sep 17 00:00:00 2001 From: Daniel Klabbers Date: Sun, 1 Aug 2021 00:41:25 +0200 Subject: [PATCH] try to patch up the advanced page --- js/src/admin/components/AdminNav.js | 1 + js/src/admin/components/AdvancedPage.js | 21 ++++++--------------- src/Queue/QueueServiceProvider.php | 15 ++++++++++++--- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/js/src/admin/components/AdminNav.js b/js/src/admin/components/AdminNav.js index ddc4d9092..6f07d9170 100644 --- a/js/src/admin/components/AdminNav.js +++ b/js/src/admin/components/AdminNav.js @@ -75,6 +75,7 @@ export default class AdminNav extends Component { ); + // We only display the advanced pane when a certain threshold is reached or it is manually activated. if (app.data.settings['advanced_settings_pane_enabled']) { items.add( 'advanced', diff --git a/js/src/admin/components/AdvancedPage.js b/js/src/admin/components/AdvancedPage.js index 321158868..d6d881b2b 100644 --- a/js/src/admin/components/AdvancedPage.js +++ b/js/src/admin/components/AdvancedPage.js @@ -7,7 +7,11 @@ export default class AdvancedPage extends AdminPage { oninit(vnode) { super.oninit(vnode); - this.queueDrivers = app.data.queueDrivers ?? []; + this.queueDrivers = {}; + + (app.data.queueDrivers).forEach(driver => { + this.queueDrivers[driver] = app.translator.trans('core.admin.queue.' + driver); + }); } headerInfo() { @@ -22,26 +26,13 @@ export default class AdvancedPage extends AdminPage { content() { return [
- {this.buildSettingComponent({ - type: 'text', - setting: 'mail_from', - label: app.translator.trans('core.admin.advanced.queue_driver_heading'), - className: 'AdvancedPage-QueueSettings', - })} {this.buildSettingComponent({ type: 'select', setting: 'queue_driver', - options: Object.keys(this.driverFields).reduce((memo, val) => ({ ...memo, [val]: val }), {}), + options: Object.keys(this.queueDrivers).reduce((memo, val) => ({ ...memo, [val]: val }), {}), label: app.translator.trans('core.admin.queue.driver_heading'), className: 'AdvancedPage-QueueSettings', })} - {this.status.sending || - Alert.component( - { - dismissible: false, - }, - app.translator.trans('core.admin.email.not_sending_message') - )} {this.submitButton()}
, ]; diff --git a/src/Queue/QueueServiceProvider.php b/src/Queue/QueueServiceProvider.php index 47a07c9fe..77d775062 100644 --- a/src/Queue/QueueServiceProvider.php +++ b/src/Queue/QueueServiceProvider.php @@ -63,9 +63,14 @@ class QueueServiceProvider extends AbstractServiceProvider /** @var Queue $driver */ $driver = $container->make($driverClass); - $driver->setContainer($container); - return $driver->build(); + // This method only exists on the Laravel abstract Queue implementation, not the contract, + // for simplicity we will try to inject the container if the method is available on the driver. + if (method_exists($driver, 'setContainer')) { + $driver->setContainer($container); + } + + return $driver; }); // Register a simple connection factory that always returns the same @@ -95,7 +100,7 @@ class QueueServiceProvider extends AbstractServiceProvider }); // Override the Laravel native Listener, so that we can ignore the environment - // option and force the binary to flarum. + // option and force the binary to Flarum. $this->container->singleton(QueueListener::class, function (Container $container) { return new Listener($container->make(Paths::class)->base); }); @@ -138,6 +143,10 @@ class QueueServiceProvider extends AbstractServiceProvider ); }); + $this->container->when(DatabaseQueue::class) + ->needs('$table') + ->give('queue_jobs'); + $this->container->alias('flarum.queue.connection', Queue::class); $this->container->alias(ConnectorInterface::class, 'queue.connection');