Users can now control which in-app and email notifications they receive from their Settings tab on their channel page. Bell (in-app) preferences: - New comment on my video (default: on) - Reply to my comment (default: on) - Comment liked (default: on) - Video liked (default: on) - New subscriber (default: on) - New video from channels I follow (default: on) - New post from channels I follow (default: on) - New user registration — super admins only (default: on) Email preferences (same set plus): - Comment liked (default: off — too noisy) - Video liked (default: off — too noisy) - New post from channels I follow (default: off) - My video finished processing (default: on) - Weekly activity digest every Monday (default: on) - New user registration — super admins only (default: on) Implementation: - Migration: notification_preferences JSON column on users table - User::notificationPref($key) helper with typed defaults - All existing notification classes updated to check prefs in via() - 4 new notification classes: NewSubscriberNotification, VideoLikedNotification, NewPostNotification, WeeklyDigestNotification - 8 new email views matching existing dark theme - SendWeeklyDigest artisan command, scheduled every Monday 09:00 - NewSubscriberNotification wired into UserController::toggleSubscribe - VideoLikedNotification wired into UserController::toggleLike - NewPostNotification wired into PostController::store (to all subscribers) - Bell renderer updated for new_subscriber, video_like, new_post types - Preferences saved via AJAX (POST /settings/notifications) — instant toggle with automatic revert on failure Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
22 lines
1.0 KiB
PHP
22 lines
1.0 KiB
PHP
<x-emails.layout subject="{{ $subscriber->name }} subscribed to your channel">
|
|
|
|
<div style="width:64px;height:64px;border-radius:50%;background:rgba(230,30,30,.12);border:1px solid rgba(230,30,30,.25);margin:0 auto 24px;text-align:center;line-height:64px;font-size:28px;">🔔</div>
|
|
|
|
<h1 class="email-title">You have a new subscriber!</h1>
|
|
<p class="email-subtitle">Your channel is growing.</p>
|
|
|
|
<p class="email-text">Hi <strong style="color:#f1f1f1;">{{ $recipient->name }}</strong>,</p>
|
|
<p class="email-text">
|
|
<strong style="color:#f1f1f1;">{{ $subscriber->name }}</strong> just subscribed to your channel.
|
|
Keep creating great content!
|
|
</p>
|
|
|
|
<div class="email-btn-wrap">
|
|
<a href="{{ route('channel', $subscriber->channel) }}" class="email-btn">👤 View Their Profile</a>
|
|
</div>
|
|
|
|
<hr class="email-divider">
|
|
<p class="email-note">You can manage your notification preferences in your <a href="{{ route('settings') }}">account settings</a>.</p>
|
|
|
|
</x-emails.layout>
|