diff --git a/extensions/subscriptions/extend.php b/extensions/subscriptions/extend.php index 23d58d4ae..1a57903e5 100644 --- a/extensions/subscriptions/extend.php +++ b/extensions/subscriptions/extend.php @@ -7,8 +7,9 @@ * LICENSE file that was distributed with this source code. */ -use Flarum\Api\Event\Serializing; use Flarum\Api\Serializer\BasicDiscussionSerializer; +use Flarum\Api\Serializer\DiscussionSerializer; +use Flarum\Discussion\Discussion; use Flarum\Discussion\Event\Saving; use Flarum\Discussion\Event\Searching; use Flarum\Event\ConfigureDiscussionGambits; @@ -21,7 +22,6 @@ use Flarum\Post\Event\Restored; use Flarum\Subscriptions\Gambit\SubscriptionGambit; use Flarum\Subscriptions\Listener; use Flarum\Subscriptions\Notification\NewPostBlueprint; -use Illuminate\Contracts\Events\Dispatcher; return [ (new Extend\Frontend('forum')) @@ -37,23 +37,25 @@ return [ (new Extend\Notification()) ->type(NewPostBlueprint::class, BasicDiscussionSerializer::class, ['alert', 'email']), - function (Dispatcher $events) { - $events->listen(Serializing::class, Listener\AddDiscussionSubscriptionAttribute::class); - $events->listen(Saving::class, Listener\SaveSubscriptionToDatabase::class); + (new Extend\ApiSerializer(DiscussionSerializer::class)) + ->attribute('subscription', function (DiscussionSerializer $serializer, Discussion $discussion) { + if ($state = $discussion->state) { + return $state->subscription ?: false; + } + }), - $events->listen(ConfigureDiscussionGambits::class, function (ConfigureDiscussionGambits $event) { + (new Extend\Event()) + ->listen(Saving::class, Listener\SaveSubscriptionToDatabase::class) + ->listen(ConfigureDiscussionGambits::class, function (ConfigureDiscussionGambits $event) { $event->gambits->add(SubscriptionGambit::class); - }); - $events->listen(Searching::class, Listener\FilterDiscussionListBySubscription::class); - - $events->listen(Posted::class, Listener\SendNotificationWhenReplyIsPosted::class); - $events->listen(Hidden::class, Listener\DeleteNotificationWhenPostIsHiddenOrDeleted::class); - $events->listen(Restored::class, Listener\RestoreNotificationWhenPostIsRestored::class); - $events->listen(Deleted::class, Listener\DeleteNotificationWhenPostIsHiddenOrDeleted::class); - - $events->listen(ConfigureUserPreferences::class, function (ConfigureUserPreferences $event) { + }) + ->listen(Searching::class, Listener\FilterDiscussionListBySubscription::class) + ->listen(Posted::class, Listener\SendNotificationWhenReplyIsPosted::class) + ->listen(Hidden::class, Listener\DeleteNotificationWhenPostIsHiddenOrDeleted::class) + ->listen(Restored::class, Listener\RestoreNotificationWhenPostIsRestored::class) + ->listen(Deleted::class, Listener\DeleteNotificationWhenPostIsHiddenOrDeleted::class) + ->listen(ConfigureUserPreferences::class, function (ConfigureUserPreferences $event) { $event->add('followAfterReply', 'boolval', false); - }); - $events->listen(Posted::class, Listener\FollowAfterReply::class); - } + }) + ->listen(Posted::class, Listener\FollowAfterReply::class), ]; diff --git a/extensions/subscriptions/src/Listener/AddDiscussionSubscriptionAttribute.php b/extensions/subscriptions/src/Listener/AddDiscussionSubscriptionAttribute.php deleted file mode 100755 index 6c4773e76..000000000 --- a/extensions/subscriptions/src/Listener/AddDiscussionSubscriptionAttribute.php +++ /dev/null @@ -1,24 +0,0 @@ -isSerializer(DiscussionSerializer::class) - && ($state = $event->model->state)) { - $event->attributes['subscription'] = $state->subscription ?: false; - } - } -}