This package adds real-time notification broadcasting capabilities to Laravel Nova Notifications, seamlessly integrating with Laravel Nova.
Install the package via Composer:
composer require yassir3wad/nova-realtime-notification
Publish the package configuration:
php artisan vendor:publish --provider="Yassir3wad\NovaRealtimeNotification\ToolServiceProvider"
Configure your broadcasting settings in config/broadcasting.php
. Ensure you have the necessary drivers (e.g., Pusher, Redis, etc.) configured.
The package configuration can be found in config/nova-realtime-notification.php
. You can customize the following settings:
enabled
: Enable/disable real-time notifications.broadcast_driver
: The broadcast driver to be used (e.g., pusher
, reverb
).broadcast_channel
: The private broadcast channel for notifications. Supported values are App.Models.User
, App.Models.Provider
, and App.Models.Customer
.enable_sound
: Enable/disable sound for notifications.sound_path
: The path to the sound file in your public directory.Example configuration (config/nova-realtime-notification.php
):
return [
'enabled' => true,
'broadcast_driver' => 'pusher',
'broadcast_channel' => 'App.Models.User',
'enable_sound' => true,
'sound_path' => 'sounds/sound1.mp3',
];
Create a new notification:
php artisan make:notification AdminNotification
Implement the via
, toNova
, and toBroadcast
methods in your notification class where you have NovaChannel
, and add broadcast
to the via
method:
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\BroadcastMessage;
use Illuminate\Notifications\Notification;
use Laravel\Nova\Notifications\NovaChannel;
use Laravel\Nova\Notifications\NovaNotification;
class AdminNotification extends Notification implements ShouldQueue
{
use Queueable;
private $message;
private $actionPath;
private $actionLabel;
private $level;
public function __construct($message, $actionPath, $actionLabel, $level)
{
$this->message = $message;
$this->actionPath = $actionPath;
$this->actionLabel = $actionLabel;
$this->level = $level;
}
public function via($notifiable)
{
return [NovaChannel::class, 'broadcast'];
}
public function toNova()
{
return (new NovaNotification)
->message($this->message)
->action($this->actionLabel, $this->actionPath)
->icon('bell')
->type($this->level);
}
public function toBroadcast(object $notifiable): BroadcastMessage
{
return new BroadcastMessage([
'message' => $this->message,
'action_label' => $this->actionLabel,
'action_path' => $this->actionPath,
'level' => $this->level,
'duration' => 7000,
]);
}
}
Trigger the notification from your application logic:
use App\Notifications\AdminNotification;
use App\Models\User;
$user = User::find(1);
$user->notify(new AdminNotification('You have a new admin message!', '/admin/messages', 'View', 'info'));
Thank you for considering contributing to the Laravel Nova Real-time Notification Broadcasting package! Please read the contribution guidelines for details.
This package is open-sourced software licensed under the MIT license.