fix: test notifications to only send it to the right channel
This commit is contained in:
		@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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);
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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)
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,8 @@
 | 
			
		||||
            @if (is_transactional_emails_enabled() && auth()->user()->isAdminFromSession())
 | 
			
		||||
                <x-modal-input buttonTitle="Send Test Email" title="Send Test Email">
 | 
			
		||||
                    <form wire:submit.prevent="sendTestEmail" class="flex flex-col w-full gap-2">
 | 
			
		||||
                        <x-forms.input wire:model="testEmailAddress" placeholder="test@example.com" id="testEmailAddress" label="Recipients" required />
 | 
			
		||||
                        <x-forms.input wire:model="testEmailAddress" placeholder="test@example.com" id="testEmailAddress"
 | 
			
		||||
                            label="Recipients" required />
 | 
			
		||||
                        <x-forms.button type="submit" @click="modalOpen=false">
 | 
			
		||||
                            Send Email
 | 
			
		||||
                        </x-forms.button>
 | 
			
		||||
@@ -50,7 +51,8 @@
 | 
			
		||||
                    </div>
 | 
			
		||||
                    <div class="flex flex-col w-full gap-2 xl:flex-row">
 | 
			
		||||
                        <x-forms.input id="smtpUsername" label="SMTP Username" />
 | 
			
		||||
                            <x-forms.input id="smtpPassword" type="password" label="SMTP Password" autocomplete="new-password" />
 | 
			
		||||
                        <x-forms.input id="smtpPassword" type="password" label="SMTP Password"
 | 
			
		||||
                            autocomplete="new-password" />
 | 
			
		||||
                        <x-forms.input id="smtpTimeout" helper="Timeout value for sending emails." label="Timeout" />
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
@@ -69,7 +71,8 @@
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="flex flex-col gap-4">
 | 
			
		||||
                    <div class="flex flex-col w-full gap-2 xl:flex-row">
 | 
			
		||||
                            <x-forms.input type="password" id="resendApiKey" placeholder="API key" required label="API Key" autocomplete="new-password" />
 | 
			
		||||
                        <x-forms.input type="password" id="resendApiKey" placeholder="API key" required label="API Key"
 | 
			
		||||
                            autocomplete="new-password" />
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            </form>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user