- CanComment trait replaces IsCommenter - Commentator interface replaces Commenter - Models moved to Models\ namespace (Comment, Reaction, Attachment, Subscription) - commenter_type/commenter_id columns replace user_type/user_id - CommentsConfig replaces Config class - table_names config key replaces tables - getCommentDisplayName() replaces getCommentName()
126 lines
2.8 KiB
Markdown
126 lines
2.8 KiB
Markdown
---
|
|
title: Notifications
|
|
description: Comment notifications, subscriptions, and real-time updates.
|
|
navigation:
|
|
icon: i-lucide-bell
|
|
seo:
|
|
description: Configure comment notifications, subscriptions, broadcasting, and polling.
|
|
---
|
|
|
|
## Notification Types
|
|
|
|
Two notification classes are included:
|
|
|
|
### CommentRepliedNotification
|
|
|
|
Sent to all thread subscribers when a new comment or reply is posted. The comment author is excluded from receiving their own notification.
|
|
|
|
### UserMentionedNotification
|
|
|
|
Sent to a user when they are @mentioned in a comment. Self-mentions are ignored.
|
|
|
|
## Channels
|
|
|
|
```php
|
|
// config/comments.php
|
|
'notifications' => [
|
|
'channels' => ['database'],
|
|
'enabled' => true,
|
|
],
|
|
```
|
|
|
|
Available channels: `'database'` and `'mail'`. Add both to send email notifications alongside database notifications:
|
|
|
|
```php
|
|
'notifications' => [
|
|
'channels' => ['database', 'mail'],
|
|
'enabled' => true,
|
|
],
|
|
```
|
|
|
|
## Subscriptions
|
|
|
|
Users can subscribe to comment threads on any commentable model. Subscribers receive notifications when new comments are posted.
|
|
|
|
### Auto-Subscribe
|
|
|
|
```php
|
|
'subscriptions' => [
|
|
'auto_subscribe' => true,
|
|
],
|
|
```
|
|
|
|
When enabled:
|
|
- Users are auto-subscribed when they post a comment
|
|
- Users are auto-subscribed when they are @mentioned
|
|
|
|
### Manual Subscription
|
|
|
|
Users can toggle their subscription using the subscribe/unsubscribe button in the comments UI.
|
|
|
|
### Programmatic Access
|
|
|
|
```php
|
|
use Relaticle\Comments\Models\Subscription;
|
|
|
|
// Check subscription status
|
|
Subscription::isSubscribed($commentable, $user);
|
|
|
|
// Subscribe/unsubscribe
|
|
Subscription::subscribe($commentable, $user);
|
|
Subscription::unsubscribe($commentable, $user);
|
|
|
|
// Get all subscribers for a commentable
|
|
$subscribers = Subscription::subscribersFor($commentable);
|
|
```
|
|
|
|
## Events
|
|
|
|
| Event | Trigger | Broadcasts |
|
|
|-------|---------|------------|
|
|
| `CommentCreated` | New comment or reply | Yes |
|
|
| `CommentUpdated` | Comment edited | Yes |
|
|
| `CommentDeleted` | Comment soft-deleted | Yes |
|
|
| `CommentReacted` | Reaction added/removed | Yes |
|
|
| `UserMentioned` | User @mentioned | No |
|
|
|
|
## Real-time Updates
|
|
|
|
### Broadcasting
|
|
|
|
Enable broadcasting for instant updates across browser sessions:
|
|
|
|
```php
|
|
// config/comments.php
|
|
'broadcasting' => [
|
|
'enabled' => true,
|
|
'channel_prefix' => 'comments',
|
|
],
|
|
```
|
|
|
|
Events are broadcast on private channels: `{prefix}.{commentable_type}.{commentable_id}`
|
|
|
|
This requires Laravel Echo and a broadcasting driver (Pusher, Ably, etc.) configured in your application.
|
|
|
|
### Polling Fallback
|
|
|
|
When broadcasting is disabled, the Livewire component polls for updates:
|
|
|
|
```php
|
|
'polling' => [
|
|
'interval' => '10s',
|
|
],
|
|
```
|
|
|
|
Set to `null` to disable polling entirely.
|
|
|
|
## Disabling Notifications
|
|
|
|
```php
|
|
'notifications' => [
|
|
'enabled' => false,
|
|
],
|
|
```
|
|
|
|
This disables all notification dispatching. Subscriptions and events still work, but no notifications are sent.
|