diff --git a/extensions/embed/bootstrap.php b/extensions/embed/bootstrap.php index 481d20d97..0ecaf69bb 100644 --- a/extensions/embed/bootstrap.php +++ b/extensions/embed/bootstrap.php @@ -14,4 +14,5 @@ use Illuminate\Contracts\Events\Dispatcher; return function (Dispatcher $events) { $events->subscribe(Listener\AddEmbedRoute::class); -}; \ No newline at end of file + $events->subscribe(Listener\FlushEmbedAssetsWhenSettingsAreChanged::class); +}; diff --git a/extensions/embed/src/Listener/FlushEmbedAssetsWhenSettingsAreChanged.php b/extensions/embed/src/Listener/FlushEmbedAssetsWhenSettingsAreChanged.php new file mode 100644 index 000000000..acb06c5f8 --- /dev/null +++ b/extensions/embed/src/Listener/FlushEmbedAssetsWhenSettingsAreChanged.php @@ -0,0 +1,58 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Flarum\Embed\Listener; + +use Flarum\Embed\DiscussionController; +use Flarum\Event\ExtensionWasDisabled; +use Flarum\Event\ExtensionWasEnabled; +use Flarum\Event\SettingWasSet; +use Illuminate\Contracts\Events\Dispatcher; + +class FlushEmbedAssetsWhenSettingsAreChanged +{ + /** + * @var DiscussionController + */ + protected $controller; + + /** + * @param DiscussionController $controller + */ + public function __construct(DiscussionController $controller) + { + $this->controller = $controller; + } + + /** + * @param Dispatcher $events + */ + public function subscribe(Dispatcher $events) + { + $events->listen(SettingWasSet::class, [$this, 'flushCss']); + $events->listen(ExtensionWasEnabled::class, [$this, 'flushAssets']); + $events->listen(ExtensionWasDisabled::class, [$this, 'flushAssets']); + } + + /** + * @param SettingWasSet $event + */ + public function flushCss(SettingWasSet $event) + { + if (preg_match('/^theme_|^custom_less$/i', $event->key)) { + $this->controller->flushCss(); + } + } + + public function flushAssets() + { + $this->controller->flushAssets(); + } +}