Skip to content

Commit

Permalink
Move user attributes from forum to currentuserserializer (#16)
Browse files Browse the repository at this point in the history
* Move user attributes from forum to currentuserserializer

* format
  • Loading branch information
imorland authored Dec 12, 2021
1 parent be01ea2 commit 34498f9
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 10 deletions.
4 changes: 2 additions & 2 deletions extend.php
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
use Flarum\Api\Serializer\BasicDiscussionSerializer;
use Flarum\Api\Serializer\BasicPostSerializer;
use Flarum\Api\Serializer\BasicUserSerializer;
use Flarum\Api\Serializer\ForumSerializer;
use Flarum\Api\Serializer\CurrentUserSerializer;
use Flarum\Extend;
use FoF\Subscribed\Blueprints\DiscussionCreatedBlueprint;
use FoF\Subscribed\Blueprints\PostUnapprovedBlueprint;
Expand All @@ -38,7 +38,7 @@
->type(PostUnapprovedBlueprint::class, BasicPostSerializer::class, [])
->type(UserCreatedBlueprint::class, BasicUserSerializer::class, []),

(new Extend\ApiSerializer(ForumSerializer::class))
(new Extend\ApiSerializer(CurrentUserSerializer::class))
->attributes(AddPermissions::class),

(new Extend\Event())
Expand Down
19 changes: 15 additions & 4 deletions js/src/forum/index.js → js/src/forum/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,23 @@ import NotificationGrid from 'flarum/forum/components/NotificationGrid';
import DiscussionCreatedNotification from './notifications/DiscussionCreatedNotification';
import UserCreatedNotification from './notifications/UserCreatedNotification';
import PostUnapprovedNotification from './notifications/PostUnapprovedNotification';
import User from 'flarum/common/models/User';
import Model from 'flarum/common/Model';
import ItemList from 'flarum/common/utils/ItemList';

app.initializers.add('fof-subscribed', () => {
app.notificationComponents.discussionCreated = DiscussionCreatedNotification;
app.notificationComponents.userCreated = UserCreatedNotification;
app.notificationComponents.postUnapproved = PostUnapprovedNotification;

extend(NotificationGrid.prototype, 'notificationTypes', (items) => {
if (app.forum.attribute('subscribeDiscussionCreated')) {
User.prototype.canSubscribeDiscussionCreated = Model.attribute('canSubscribeDiscussionCreated');
User.prototype.canSubscribePostUnapproved = Model.attribute('canSubscribePostUnapproved');
User.prototype.canSubscribeUserCreated = Model.attribute('canSubscribeUserCreated');

extend(NotificationGrid.prototype, 'notificationTypes', (items: ItemList) => {
const currentUser = app.session?.user;

if (currentUser?.canSubscribeDiscussionCreated()) {
items.add(
'discussionCreated',
{
Expand All @@ -23,7 +32,8 @@ app.initializers.add('fof-subscribed', () => {
5
);
}
if (app.forum.attribute('subscribePostUnapproved')) {

if (currentUser?.canSubscribePostUnapproved()) {
items.add(
'postUnapproved',
{
Expand All @@ -34,7 +44,8 @@ app.initializers.add('fof-subscribed', () => {
-10
);
}
if (app.forum.attribute('subscribeUserCreated')) {

if (currentUser?.canSubscribeUserCreated()) {
items.add(
'userCreated',
{
Expand Down
10 changes: 6 additions & 4 deletions src/Listeners/AddPermissions.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,20 @@

namespace FoF\Subscribed\Listeners;

use Flarum\Api\Serializer\CurrentUserSerializer;
use Flarum\Api\Serializer\ForumSerializer;
use Flarum\User\User;

class AddPermissions
{
/**
* @param ForumSerializer $serializer
*/
public function __invoke(ForumSerializer $serializer)
public function __invoke(CurrentUserSerializer $serializer, User $user, array $attributes): array
{
$attributes['subscribeDiscussionCreated'] = $serializer->getActor()->can('subscribeDiscussionCreated');
$attributes['subscribePostUnapproved'] = $serializer->getActor()->can('subscribePostUnapproved');
$attributes['subscribeUserCreated'] = $serializer->getActor()->can('subscribeUserCreated');
$attributes['canSubscribeDiscussionCreated'] = $serializer->getActor()->can('subscribeDiscussionCreated');
$attributes['canSubscribePostUnapproved'] = $serializer->getActor()->can('subscribePostUnapproved');
$attributes['canSubscribeUserCreated'] = $serializer->getActor()->can('subscribeUserCreated');

return $attributes;
}
Expand Down

0 comments on commit 34498f9

Please sign in to comment.