trypost/app/Events/NotificationCreated.php
Paulo Castellano 4f3d9ff015 refactor: prefer string interpolation over concatenation for channel names
Convert all 'foo.'.$bar style concatenations to "foo.{$bar}" interpolation
in event broadcast channels (PostCreated, PostDeleted, PostCommentCreated,
PostPlatformStatusUpdated, NotificationCreated) and the related event
tests.

Document the convention in CLAUDE.md so new code follows the pattern.
2026-05-08 19:22:01 -03:00

58 lines
1.8 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Events;
use App\Models\Notification;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
class NotificationCreated implements ShouldBroadcast
{
use Dispatchable, InteractsWithSockets;
public function __construct(public Notification $notification) {}
public function broadcastAs(): string
{
return 'notification.created';
}
public function broadcastOn(): array
{
return [
new PrivateChannel("workspace.{$this->notification->workspace_id}.user.{$this->notification->user_id}"),
];
}
/**
* @return array<string, mixed>
*/
public function broadcastWith(): array
{
return [
'notification' => [
'id' => $this->notification->id,
'user_id' => $this->notification->user_id,
'workspace_id' => $this->notification->workspace_id,
'type' => $this->notification->type->value,
'channel' => $this->notification->channel->value,
'title' => $this->notification->title,
'body' => $this->notification->body,
'data' => $this->notification->data,
'read_at' => $this->notification->read_at?->toISOString(),
'archived_at' => $this->notification->archived_at?->toISOString(),
'created_at' => $this->notification->created_at->toISOString(),
'updated_at' => $this->notification->updated_at->toISOString(),
],
];
}
public function broadcastQueue(): string
{
return 'broadcasts';
}
}