js(__DIR__.'/js/dist/forum.js') ->css(__DIR__.'/less/forum.less'), (new Extend\Formatter) ->configure(ConfigureMentions::class), (new Extend\Model(Post::class)) ->belongsToMany('mentionedBy', Post::class, 'post_mentions_post', 'mentions_post_id', 'post_id') ->belongsToMany('mentionsPosts', Post::class, 'post_mentions_post', 'post_id', 'mentions_post_id') ->belongsToMany('mentionsUsers', User::class, 'post_mentions_user', 'post_id', 'mentions_user_id'), new Extend\Locales(__DIR__.'/locale'), (new Extend\View) ->namespace('flarum-mentions', __DIR__.'/views'), (new Extend\Notification()) ->type(PostMentionedBlueprint::class, PostSerializer::class, ['alert']) ->type(UserMentionedBlueprint::class, PostSerializer::class, ['alert']), (new Extend\ApiSerializer(BasicPostSerializer::class)) ->hasMany('mentionedBy', BasicPostSerializer::class) ->hasMany('mentionsPosts', BasicPostSerializer::class) ->hasMany('mentionsUsers', BasicPostSerializer::class), (new Extend\ApiController(Controller\ShowDiscussionController::class)) ->addInclude(['posts.mentionedBy', 'posts.mentionedBy.user', 'posts.mentionedBy.discussion']), (new Extend\ApiController(Controller\ShowPostController::class)) ->addInclude(['mentionedBy', 'mentionedBy.user', 'mentionedBy.discussion']), (new Extend\ApiController(Controller\ListPostsController::class)) ->addInclude(['mentionedBy', 'mentionedBy.user', 'mentionedBy.discussion']), (new Extend\ApiController(Controller\CreatePostController::class)) ->addInclude(['mentionsPosts', 'mentionsPosts.mentionedBy']), (new Extend\ApiController(Controller\AbstractSerializeController::class)) ->prepareDataForSerialization(FilterVisiblePosts::class), (new Extend\Event()) ->listen(Posted::class, Listener\UpdateMentionsMetadataWhenVisible::class) ->listen(Restored::class, Listener\UpdateMentionsMetadataWhenVisible::class) ->listen(Revised::class, Listener\UpdateMentionsMetadataWhenVisible::class) ->listen(Hidden::class, Listener\UpdateMentionsMetadataWhenInvisible::class) ->listen(Deleted::class, Listener\UpdateMentionsMetadataWhenInvisible::class) ->listen(ConfigurePostsQuery::class, Listener\AddFilterByMentions::class), function (Dispatcher $events) { $events->listen(Rendering::class, Listener\FormatPostMentions::class); $events->listen(Rendering::class, Listener\FormatUserMentions::class); }, ];