This package adds real-time notification broadcasting capabilities to Laravel Nova Notifications.
yassir3wad/nova-realtime-notification is a Laravel package for this package adds real-time notification broadcasting capabilities to laravel nova notifications..
It currently has 3 GitHub stars and 2.098 downloads on Packagist (latest version v1.0.2).
Install it with composer require yassir3wad/nova-realtime-notification.
Discover more Laravel packages by yassir3wad
or browse all Laravel packages to compare alternatives.
Last updated
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.
