Use new extenders (#36)

This commit is contained in:
Sami Mazouz 2020-12-08 18:37:40 +01:00 committed by GitHub
parent 032ad4aadc
commit 2ef3bf411f
2 changed files with 20 additions and 42 deletions

View File

@ -7,8 +7,9 @@
* LICENSE file that was distributed with this source code. * LICENSE file that was distributed with this source code.
*/ */
use Flarum\Api\Event\Serializing;
use Flarum\Api\Serializer\BasicDiscussionSerializer; use Flarum\Api\Serializer\BasicDiscussionSerializer;
use Flarum\Api\Serializer\DiscussionSerializer;
use Flarum\Discussion\Discussion;
use Flarum\Discussion\Event\Saving; use Flarum\Discussion\Event\Saving;
use Flarum\Discussion\Event\Searching; use Flarum\Discussion\Event\Searching;
use Flarum\Event\ConfigureDiscussionGambits; use Flarum\Event\ConfigureDiscussionGambits;
@ -21,7 +22,6 @@ use Flarum\Post\Event\Restored;
use Flarum\Subscriptions\Gambit\SubscriptionGambit; use Flarum\Subscriptions\Gambit\SubscriptionGambit;
use Flarum\Subscriptions\Listener; use Flarum\Subscriptions\Listener;
use Flarum\Subscriptions\Notification\NewPostBlueprint; use Flarum\Subscriptions\Notification\NewPostBlueprint;
use Illuminate\Contracts\Events\Dispatcher;
return [ return [
(new Extend\Frontend('forum')) (new Extend\Frontend('forum'))
@ -37,23 +37,25 @@ return [
(new Extend\Notification()) (new Extend\Notification())
->type(NewPostBlueprint::class, BasicDiscussionSerializer::class, ['alert', 'email']), ->type(NewPostBlueprint::class, BasicDiscussionSerializer::class, ['alert', 'email']),
function (Dispatcher $events) { (new Extend\ApiSerializer(DiscussionSerializer::class))
$events->listen(Serializing::class, Listener\AddDiscussionSubscriptionAttribute::class); ->attribute('subscription', function (DiscussionSerializer $serializer, Discussion $discussion) {
$events->listen(Saving::class, Listener\SaveSubscriptionToDatabase::class); 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); $event->gambits->add(SubscriptionGambit::class);
}); })
$events->listen(Searching::class, Listener\FilterDiscussionListBySubscription::class); ->listen(Searching::class, Listener\FilterDiscussionListBySubscription::class)
->listen(Posted::class, Listener\SendNotificationWhenReplyIsPosted::class)
$events->listen(Posted::class, Listener\SendNotificationWhenReplyIsPosted::class); ->listen(Hidden::class, Listener\DeleteNotificationWhenPostIsHiddenOrDeleted::class)
$events->listen(Hidden::class, Listener\DeleteNotificationWhenPostIsHiddenOrDeleted::class); ->listen(Restored::class, Listener\RestoreNotificationWhenPostIsRestored::class)
$events->listen(Restored::class, Listener\RestoreNotificationWhenPostIsRestored::class); ->listen(Deleted::class, Listener\DeleteNotificationWhenPostIsHiddenOrDeleted::class)
$events->listen(Deleted::class, Listener\DeleteNotificationWhenPostIsHiddenOrDeleted::class); ->listen(ConfigureUserPreferences::class, function (ConfigureUserPreferences $event) {
$events->listen(ConfigureUserPreferences::class, function (ConfigureUserPreferences $event) {
$event->add('followAfterReply', 'boolval', false); $event->add('followAfterReply', 'boolval', false);
}); })
$events->listen(Posted::class, Listener\FollowAfterReply::class); ->listen(Posted::class, Listener\FollowAfterReply::class),
}
]; ];

View File

@ -1,24 +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\Subscriptions\Listener;
use Flarum\Api\Event\Serializing;
use Flarum\Api\Serializer\DiscussionSerializer;
class AddDiscussionSubscriptionAttribute
{
public function handle(Serializing $event)
{
if ($event->isSerializer(DiscussionSerializer::class)
&& ($state = $event->model->state)) {
$event->attributes['subscription'] = $state->subscription ?: false;
}
}
}