From ba31890aa4e613c3f271b013d2a60019f803a8e4 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Wed, 20 May 2015 12:32:17 +0930 Subject: [PATCH] Update for new notifications API --- .../src/DiscussionStickiedNotification.php | 23 +++------- .../Handlers/DiscussionStickiedNotifier.php | 45 ++++++++----------- .../sticky/src/StickyServiceProvider.php | 2 +- 3 files changed, 27 insertions(+), 43 deletions(-) diff --git a/extensions/sticky/src/DiscussionStickiedNotification.php b/extensions/sticky/src/DiscussionStickiedNotification.php index 97047f426..b9ff17b0b 100644 --- a/extensions/sticky/src/DiscussionStickiedNotification.php +++ b/extensions/sticky/src/DiscussionStickiedNotification.php @@ -1,38 +1,29 @@ discussion = $discussion; - $this->sender = $sender; $this->post = $post; } public function getSubject() { - return $this->discussion; + return $this->post->discussion; } public function getSender() { - return $this->sender; + return $this->post->user; } - public function getAlertData() + public function getData() { - return ['postNumber' => $this->post->number]; + return ['postNumber' => (int) $this->post->number]; } public static function getType() diff --git a/extensions/sticky/src/Handlers/DiscussionStickiedNotifier.php b/extensions/sticky/src/Handlers/DiscussionStickiedNotifier.php index 39ccb29e7..c36c5a97a 100755 --- a/extensions/sticky/src/Handlers/DiscussionStickiedNotifier.php +++ b/extensions/sticky/src/Handlers/DiscussionStickiedNotifier.php @@ -4,16 +4,18 @@ use Flarum\Sticky\DiscussionStickiedPost; use Flarum\Sticky\DiscussionStickiedNotification; use Flarum\Sticky\Events\DiscussionWasStickied; use Flarum\Sticky\Events\DiscussionWasUnstickied; -use Flarum\Core\Notifications\Notifier; +use Flarum\Core\Notifications\NotificationSyncer; +use Flarum\Core\Models\Discussion; +use Flarum\Core\Models\User; use Illuminate\Contracts\Events\Dispatcher; class DiscussionStickiedNotifier { - protected $notifier; + protected $notifications; - public function __construct(Notifier $notifier) + public function __construct(NotificationSyncer $notifications) { - $this->notifier = $notifier; + $this->notifications = $notifications; } /** @@ -29,37 +31,28 @@ class DiscussionStickiedNotifier public function whenDiscussionWasStickied(DiscussionWasStickied $event) { - $post = $this->createPost($event->discussion->id, $event->user->id, true); - - $post = $event->discussion->addPost($post); - - if ($event->discussion->start_user_id !== $event->user->id) { - $notification = $this->createNotification($event->discussion, $post->user, $post); - - $this->notifier->send($notification, [$post->discussion->startUser]); - } + $this->stickyChanged($event->discussion, $event->user, true); } public function whenDiscussionWasUnstickied(DiscussionWasUnstickied $event) { - $post = $this->createPost($event->discussion->id, $event->user->id, false); - - $event->discussion->addPost($post); - - $this->notifier->retract($this->createNotification($event->discussion, $event->user)); + $this->stickyChanged($event->discussion, $event->user, false); } - protected function createPost($discussionId, $userId, $isSticky) + protected function stickyChanged(Discussion $discussion, User $user, $isSticky) { - return DiscussionStickiedPost::reply( - $discussionId, - $userId, + $post = DiscussionStickiedPost::reply( + $discussion->id, + $user->id, $isSticky ); - } - protected function createNotification($discussion, $user, $post = null) - { - return new DiscussionStickiedNotification($discussion, $user, $post); + $post = $discussion->addPost($post); + + if ($discussion->start_user_id !== $user->id) { + $notification = new DiscussionStickiedNotification($post); + + $this->notifications->sync($notification, $post->exists ? [$discussion->startUser] : []); + } } } diff --git a/extensions/sticky/src/StickyServiceProvider.php b/extensions/sticky/src/StickyServiceProvider.php index fdd80db8f..8ac048ade 100644 --- a/extensions/sticky/src/StickyServiceProvider.php +++ b/extensions/sticky/src/StickyServiceProvider.php @@ -34,7 +34,7 @@ class StickyServiceProvider extends ServiceProvider new DiscussionGambit('Flarum\Sticky\StickyGambit'), - (new NotificationType('Flarum\Sticky\DiscussionStickiedNotification'))->enableByDefault('alert'), + (new NotificationType('Flarum\Sticky\DiscussionStickiedNotification', 'Flarum\Api\Serializers\DiscussionBasicSerializer'))->enableByDefault('alert'), new Permission('discussion.sticky') );