1
0
mirror of https://github.com/flarum/core.git synced 2025-08-13 11:54:32 +02:00

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) {
$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) {
$event->add('followAfterReply', 'boolval', false);
});
$events->listen(Posted::class, Listener\FollowAfterReply::class);
} }
}),
(new Extend\Event())
->listen(Saving::class, Listener\SaveSubscriptionToDatabase::class)
->listen(ConfigureDiscussionGambits::class, function (ConfigureDiscussionGambits $event) {
$event->gambits->add(SubscriptionGambit::class);
})
->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);
})
->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;
}
}
}