From 01549123c03c3c42a293f00f8877c4f326f0a104 Mon Sep 17 00:00:00 2001 From: Sami Mazouz <sychocouldy@gmail.com> Date: Tue, 8 Dec 2020 17:53:05 +0100 Subject: [PATCH] Use new extenders (#22) --- extensions/sticky/extend.php | 18 ++++++- .../sticky/src/Listener/AddApiAttributes.php | 49 ------------------- .../CreatePostWhenDiscussionIsStickied.php | 10 ---- 3 files changed, 17 insertions(+), 60 deletions(-) delete mode 100755 extensions/sticky/src/Listener/AddApiAttributes.php diff --git a/extensions/sticky/extend.php b/extensions/sticky/extend.php index 556fb46bb..7e7a5a61c 100644 --- a/extensions/sticky/extend.php +++ b/extensions/sticky/extend.php @@ -7,8 +7,11 @@ * LICENSE file that was distributed with this source code. */ +use Flarum\Api\Controller\ListDiscussionsController; +use Flarum\Api\Serializer\DiscussionSerializer; use Flarum\Extend; use Flarum\Sticky\Listener; +use Flarum\Sticky\Post\DiscussionStickiedPost; use Illuminate\Contracts\Events\Dispatcher; return [ @@ -16,13 +19,26 @@ return [ ->js(__DIR__.'/js/dist/forum.js') ->css(__DIR__.'/less/forum.less'), + (new Extend\Post()) + ->type(DiscussionStickiedPost::class), + + (new Extend\ApiSerializer(DiscussionSerializer::class)) + ->attribute('isSticky', function (DiscussionSerializer $serializer, $discussion) { + return (bool) $discussion->is_sticky; + }) + ->attribute('canSticky', function (DiscussionSerializer $serializer, $discussion) { + return (bool) $serializer->getActor()->can('sticky', $discussion); + }), + + (new Extend\ApiController(ListDiscussionsController::class)) + ->addInclude('firstPost'), + (new Extend\Frontend('admin')) ->js(__DIR__.'/js/dist/admin.js'), new Extend\Locales(__DIR__.'/locale'), function (Dispatcher $events) { - $events->subscribe(Listener\AddApiAttributes::class); $events->subscribe(Listener\CreatePostWhenDiscussionIsStickied::class); $events->subscribe(Listener\PinStickiedDiscussionsToTop::class); $events->subscribe(Listener\SaveStickyToDatabase::class); diff --git a/extensions/sticky/src/Listener/AddApiAttributes.php b/extensions/sticky/src/Listener/AddApiAttributes.php deleted file mode 100755 index 9afc4c1d8..000000000 --- a/extensions/sticky/src/Listener/AddApiAttributes.php +++ /dev/null @@ -1,49 +0,0 @@ -<?php - -/* - * This file is part of Flarum. - * - * For detailed copyright and license information, please view the - * LICENSE file that was distributed with this source code. - */ - -namespace Flarum\Sticky\Listener; - -use Flarum\Api\Controller\ListDiscussionsController; -use Flarum\Api\Event\Serializing; -use Flarum\Api\Event\WillGetData; -use Flarum\Api\Serializer\DiscussionSerializer; -use Illuminate\Contracts\Events\Dispatcher; - -class AddApiAttributes -{ - /** - * @param Dispatcher $events - */ - public function subscribe(Dispatcher $events) - { - $events->listen(Serializing::class, [$this, 'prepareApiAttributes']); - $events->listen(WillGetData::class, [$this, 'includeFirstPost']); - } - - /** - * @param Serializing $event - */ - public function prepareApiAttributes(Serializing $event) - { - if ($event->isSerializer(DiscussionSerializer::class)) { - $event->attributes['isSticky'] = (bool) $event->model->is_sticky; - $event->attributes['canSticky'] = (bool) $event->actor->can('sticky', $event->model); - } - } - - /** - * @param WillGetData $event - */ - public function includeFirstPost(WillGetData $event) - { - if ($event->isController(ListDiscussionsController::class)) { - $event->addInclude('firstPost'); - } - } -} diff --git a/extensions/sticky/src/Listener/CreatePostWhenDiscussionIsStickied.php b/extensions/sticky/src/Listener/CreatePostWhenDiscussionIsStickied.php index 9870790fc..95e237e82 100755 --- a/extensions/sticky/src/Listener/CreatePostWhenDiscussionIsStickied.php +++ b/extensions/sticky/src/Listener/CreatePostWhenDiscussionIsStickied.php @@ -10,7 +10,6 @@ namespace Flarum\Sticky\Listener; use Flarum\Discussion\Discussion; -use Flarum\Event\ConfigurePostTypes; use Flarum\Sticky\Event\DiscussionWasStickied; use Flarum\Sticky\Event\DiscussionWasUnstickied; use Flarum\Sticky\Post\DiscussionStickiedPost; @@ -24,19 +23,10 @@ class CreatePostWhenDiscussionIsStickied */ public function subscribe(Dispatcher $events) { - $events->listen(ConfigurePostTypes::class, [$this, 'configurePostTypes']); $events->listen(DiscussionWasStickied::class, [$this, 'whenDiscussionWasStickied']); $events->listen(DiscussionWasUnstickied::class, [$this, 'whenDiscussionWasUnstickied']); } - /** - * @param ConfigurePostTypes $event - */ - public function configurePostTypes(ConfigurePostTypes $event) - { - $event->add(DiscussionStickiedPost::class); - } - /** * @param DiscussionWasStickied $event */