js(__DIR__.'/js/dist/forum.js') ->css(__DIR__.'/less/forum.less'), (new Extend\Frontend('admin')) ->js(__DIR__.'/js/dist/admin.js'), (new Extend\Model(Post::class)) ->belongsToMany('likes', User::class, 'post_likes', 'post_id', 'user_id'), new Extend\Locales(__DIR__.'/locale'), (new Extend\Notification()) ->type(PostLikedBlueprint::class, PostSerializer::class, ['alert']), (new Extend\ApiSerializer(PostSerializer::class)) ->hasMany('likes', BasicUserSerializer::class) ->attribute('canLike', function (PostSerializer $serializer, $model) { return (bool) $serializer->getActor()->can('like', $model); }), (new Extend\ApiController(Controller\ShowDiscussionController::class)) ->addInclude('posts.likes'), (new Extend\ApiController(Controller\ListPostsController::class)) ->addInclude('likes'), (new Extend\ApiController(Controller\ShowPostController::class)) ->addInclude('likes'), (new Extend\ApiController(Controller\CreatePostController::class)) ->addInclude('likes'), (new Extend\ApiController(Controller\UpdatePostController::class)) ->addInclude('likes'), (new Extend\Event()) ->listen(PostWasLiked::class, Listener\SendNotificationWhenPostIsLiked::class) ->listen(PostWasUnliked::class, Listener\SendNotificationWhenPostIsUnliked::class), function (Dispatcher $events) { $events->subscribe(Listener\SaveLikesToDatabase::class); }, ];