diff --git a/app/Livewire/Notifications/Discord.php b/app/Livewire/Notifications/Discord.php index c09966e53..57007813e 100644 --- a/app/Livewire/Notifications/Discord.php +++ b/app/Livewire/Notifications/Discord.php @@ -154,7 +154,7 @@ class Discord extends Component public function sendTestNotification() { try { - $this->team->notify(new Test); + $this->team->notify(new Test(channel: 'discord')); $this->dispatch('success', 'Test notification sent.'); } catch (\Throwable $e) { return handleError($e, $this); diff --git a/app/Livewire/Notifications/Email.php b/app/Livewire/Notifications/Email.php index dc5a35d66..dc2a95e84 100644 --- a/app/Livewire/Notifications/Email.php +++ b/app/Livewire/Notifications/Email.php @@ -106,6 +106,7 @@ class Email extends Component $this->emails = auth()->user()->email; $this->settings = $this->team->emailNotificationSettings; $this->syncData(); + $this->testEmailAddress = auth()->user()->email; } catch (\Throwable $e) { return handleError($e, $this); } @@ -317,7 +318,7 @@ class Email extends Component 'test-email:'.$this->team->id, $perMinute = 0, function () { - $this->team?->notify(new Test($this->testEmailAddress)); + $this->team?->notify(new Test($this->testEmailAddress, 'email')); $this->dispatch('success', 'Test Email sent.'); }, $decaySeconds = 10, diff --git a/app/Livewire/Notifications/Slack.php b/app/Livewire/Notifications/Slack.php index 91f05f42f..97464fa1c 100644 --- a/app/Livewire/Notifications/Slack.php +++ b/app/Livewire/Notifications/Slack.php @@ -154,7 +154,7 @@ class Slack extends Component public function sendTestNotification() { try { - $this->team->notify(new Test); + $this->team->notify(new Test(channel: 'slack')); $this->dispatch('success', 'Test notification sent.'); } catch (\Throwable $e) { return handleError($e, $this); diff --git a/app/Livewire/Notifications/Telegram.php b/app/Livewire/Notifications/Telegram.php index d425fd262..de2fa9cdc 100644 --- a/app/Livewire/Notifications/Telegram.php +++ b/app/Livewire/Notifications/Telegram.php @@ -223,7 +223,7 @@ class Telegram extends Component public function sendTestNotification() { try { - $this->team->notify(new Test); + $this->team->notify(new Test(channel: 'telegram')); $this->dispatch('success', 'Test notification sent.'); } catch (\Throwable $e) { return handleError($e, $this); diff --git a/app/Livewire/SettingsEmail.php b/app/Livewire/SettingsEmail.php index 4636a3b25..1c5edb108 100644 --- a/app/Livewire/SettingsEmail.php +++ b/app/Livewire/SettingsEmail.php @@ -3,8 +3,10 @@ namespace App\Livewire; use App\Models\InstanceSettings; +use App\Models\Team; use App\Notifications\Test; use Illuminate\Support\Facades\RateLimiter; +use Livewire\Attributes\Locked; use Livewire\Attributes\Validate; use Livewire\Component; @@ -12,6 +14,9 @@ class SettingsEmail extends Component { public InstanceSettings $settings; + #[Locked] + public Team $team; + #[Validate(['boolean'])] public bool $smtpEnabled = false; @@ -58,6 +63,8 @@ class SettingsEmail extends Component } $this->settings = instanceSettings(); $this->syncData(); + $this->team = auth()->user()->currentTeam(); + $this->testEmailAddress = auth()->user()->email; } public function syncData(bool $toModel = false) @@ -219,7 +226,7 @@ class SettingsEmail extends Component 'test-email:'.$this->team->id, $perMinute = 0, function () { - $this->team?->notify(new Test($this->testEmailAddress)); + $this->team?->notify(new Test($this->testEmailAddress, 'email')); $this->dispatch('success', 'Test Email sent.'); }, $decaySeconds = 10, diff --git a/app/Notifications/Test.php b/app/Notifications/Test.php index 7ae1c5286..da9098500 100644 --- a/app/Notifications/Test.php +++ b/app/Notifications/Test.php @@ -2,7 +2,10 @@ namespace App\Notifications; +use App\Notifications\Channels\DiscordChannel; use App\Notifications\Channels\EmailChannel; +use App\Notifications\Channels\SlackChannel; +use App\Notifications\Channels\TelegramChannel; use App\Notifications\Dto\DiscordMessage; use App\Notifications\Dto\SlackMessage; use Illuminate\Bus\Queueable; @@ -17,14 +20,26 @@ class Test extends Notification implements ShouldQueue public $tries = 5; - public function __construct(public ?string $emails = null) + public function __construct(public ?string $emails = null, public ?string $channel = null) { $this->onQueue('high'); } public function via(object $notifiable): array { - return $notifiable->getEnabledChannels('test'); + if ($this->channel) { + $channels = match ($this->channel) { + 'email' => [EmailChannel::class], + 'discord' => [DiscordChannel::class], + 'telegram' => [TelegramChannel::class], + 'slack' => [SlackChannel::class], + default => [], + }; + } else { + $channels = $notifiable->getEnabledChannels('test'); + } + + return $channels; } public function middleware(object $notifiable, string $channel) diff --git a/resources/views/livewire/settings-email.blade.php b/resources/views/livewire/settings-email.blade.php index 81ee4878e..19c77971c 100644 --- a/resources/views/livewire/settings-email.blade.php +++ b/resources/views/livewire/settings-email.blade.php @@ -1,78 +1,81 @@