fix(server): enhance error handling in server patch check notifications
This commit is contained in:
		@@ -31,7 +31,7 @@ class ServerPatchCheckJob implements ShouldBeEncrypted, ShouldQueue
 | 
				
			|||||||
    public function handle(): void
 | 
					    public function handle(): void
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            if ($this->server->isFunctional() === false) {
 | 
					            if ($this->server->serverStatus() === false) {
 | 
				
			||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -44,6 +44,8 @@ class ServerPatchCheckJob implements ShouldBeEncrypted, ShouldQueue
 | 
				
			|||||||
            $patchData = CheckUpdates::run($this->server);
 | 
					            $patchData = CheckUpdates::run($this->server);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (isset($patchData['error'])) {
 | 
					            if (isset($patchData['error'])) {
 | 
				
			||||||
 | 
					                $team->notify(new ServerPatchCheck($this->server, $patchData));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return; // Skip if there's an error checking for updates
 | 
					                return; // Skip if there's an error checking for updates
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -30,6 +30,21 @@ class ServerPatchCheck extends CustomEmailNotification
 | 
				
			|||||||
    public function toMail($notifiable = null): MailMessage
 | 
					    public function toMail($notifiable = null): MailMessage
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        $mail = new MailMessage;
 | 
					        $mail = new MailMessage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Handle error case
 | 
				
			||||||
 | 
					        if (isset($this->patchData['error'])) {
 | 
				
			||||||
 | 
					            $mail->subject("Coolify: [ERROR] Failed to check patches on {$this->server->name}");
 | 
				
			||||||
 | 
					            $mail->view('emails.server-patches-error', [
 | 
				
			||||||
 | 
					                'name' => $this->server->name,
 | 
				
			||||||
 | 
					                'error' => $this->patchData['error'],
 | 
				
			||||||
 | 
					                'osId' => $this->patchData['osId'] ?? 'unknown',
 | 
				
			||||||
 | 
					                'package_manager' => $this->patchData['package_manager'] ?? 'unknown',
 | 
				
			||||||
 | 
					                'server_url' => $this->serverUrl,
 | 
				
			||||||
 | 
					            ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return $mail;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
					        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
				
			||||||
        $mail->subject("Coolify: [ACTION REQUIRED] {$totalUpdates} server patches available on {$this->server->name}");
 | 
					        $mail->subject("Coolify: [ACTION REQUIRED] {$totalUpdates} server patches available on {$this->server->name}");
 | 
				
			||||||
        $mail->view('emails.server-patches', [
 | 
					        $mail->view('emails.server-patches', [
 | 
				
			||||||
@@ -46,6 +61,26 @@ class ServerPatchCheck extends CustomEmailNotification
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function toDiscord(): DiscordMessage
 | 
					    public function toDiscord(): DiscordMessage
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        // Handle error case
 | 
				
			||||||
 | 
					        if (isset($this->patchData['error'])) {
 | 
				
			||||||
 | 
					            $osId = $this->patchData['osId'] ?? 'unknown';
 | 
				
			||||||
 | 
					            $packageManager = $this->patchData['package_manager'] ?? 'unknown';
 | 
				
			||||||
 | 
					            $error = $this->patchData['error'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $description = "**Failed to check for updates** on server {$this->server->name}\n\n";
 | 
				
			||||||
 | 
					            $description .= "**Error Details:**\n";
 | 
				
			||||||
 | 
					            $description .= '• OS: '.ucfirst($osId)."\n";
 | 
				
			||||||
 | 
					            $description .= "• Package Manager: {$packageManager}\n";
 | 
				
			||||||
 | 
					            $description .= "• Error: {$error}\n\n";
 | 
				
			||||||
 | 
					            $description .= "[Manage Server]($this->serverUrl)";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return new DiscordMessage(
 | 
				
			||||||
 | 
					                title: ':x: Coolify: [ERROR] Failed to check patches on '.$this->server->name,
 | 
				
			||||||
 | 
					                description: $description,
 | 
				
			||||||
 | 
					                color: DiscordMessage::errorColor(),
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
					        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
				
			||||||
        $updates = $this->patchData['updates'] ?? [];
 | 
					        $updates = $this->patchData['updates'] ?? [];
 | 
				
			||||||
        $osId = $this->patchData['osId'] ?? 'unknown';
 | 
					        $osId = $this->patchData['osId'] ?? 'unknown';
 | 
				
			||||||
@@ -92,6 +127,29 @@ class ServerPatchCheck extends CustomEmailNotification
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function toTelegram(): array
 | 
					    public function toTelegram(): array
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        // Handle error case
 | 
				
			||||||
 | 
					        if (isset($this->patchData['error'])) {
 | 
				
			||||||
 | 
					            $osId = $this->patchData['osId'] ?? 'unknown';
 | 
				
			||||||
 | 
					            $packageManager = $this->patchData['package_manager'] ?? 'unknown';
 | 
				
			||||||
 | 
					            $error = $this->patchData['error'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $message = "❌ Coolify: [ERROR] Failed to check patches on {$this->server->name}!\n\n";
 | 
				
			||||||
 | 
					            $message .= "📊 Error Details:\n";
 | 
				
			||||||
 | 
					            $message .= '• OS: '.ucfirst($osId)."\n";
 | 
				
			||||||
 | 
					            $message .= "• Package Manager: {$packageManager}\n";
 | 
				
			||||||
 | 
					            $message .= "• Error: {$error}\n\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return [
 | 
				
			||||||
 | 
					                'message' => $message,
 | 
				
			||||||
 | 
					                'buttons' => [
 | 
				
			||||||
 | 
					                    [
 | 
				
			||||||
 | 
					                        'text' => 'Manage Server',
 | 
				
			||||||
 | 
					                        'url' => $this->serverUrl,
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					            ];
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
					        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
				
			||||||
        $updates = $this->patchData['updates'] ?? [];
 | 
					        $updates = $this->patchData['updates'] ?? [];
 | 
				
			||||||
        $osId = $this->patchData['osId'] ?? 'unknown';
 | 
					        $osId = $this->patchData['osId'] ?? 'unknown';
 | 
				
			||||||
@@ -145,6 +203,31 @@ class ServerPatchCheck extends CustomEmailNotification
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function toPushover(): PushoverMessage
 | 
					    public function toPushover(): PushoverMessage
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        // Handle error case
 | 
				
			||||||
 | 
					        if (isset($this->patchData['error'])) {
 | 
				
			||||||
 | 
					            $osId = $this->patchData['osId'] ?? 'unknown';
 | 
				
			||||||
 | 
					            $packageManager = $this->patchData['package_manager'] ?? 'unknown';
 | 
				
			||||||
 | 
					            $error = $this->patchData['error'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $message = "[ERROR] Failed to check patches on {$this->server->name}!\n\n";
 | 
				
			||||||
 | 
					            $message .= "Error Details:\n";
 | 
				
			||||||
 | 
					            $message .= '• OS: '.ucfirst($osId)."\n";
 | 
				
			||||||
 | 
					            $message .= "• Package Manager: {$packageManager}\n";
 | 
				
			||||||
 | 
					            $message .= "• Error: {$error}\n\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return new PushoverMessage(
 | 
				
			||||||
 | 
					                title: 'Server patch check failed',
 | 
				
			||||||
 | 
					                level: 'error',
 | 
				
			||||||
 | 
					                message: $message,
 | 
				
			||||||
 | 
					                buttons: [
 | 
				
			||||||
 | 
					                    [
 | 
				
			||||||
 | 
					                        'text' => 'Manage Server',
 | 
				
			||||||
 | 
					                        'url' => $this->serverUrl,
 | 
				
			||||||
 | 
					                    ],
 | 
				
			||||||
 | 
					                ],
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
					        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
				
			||||||
        $updates = $this->patchData['updates'] ?? [];
 | 
					        $updates = $this->patchData['updates'] ?? [];
 | 
				
			||||||
        $osId = $this->patchData['osId'] ?? 'unknown';
 | 
					        $osId = $this->patchData['osId'] ?? 'unknown';
 | 
				
			||||||
@@ -194,6 +277,26 @@ class ServerPatchCheck extends CustomEmailNotification
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    public function toSlack(): SlackMessage
 | 
					    public function toSlack(): SlackMessage
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        // Handle error case
 | 
				
			||||||
 | 
					        if (isset($this->patchData['error'])) {
 | 
				
			||||||
 | 
					            $osId = $this->patchData['osId'] ?? 'unknown';
 | 
				
			||||||
 | 
					            $packageManager = $this->patchData['package_manager'] ?? 'unknown';
 | 
				
			||||||
 | 
					            $error = $this->patchData['error'];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $description = "Failed to check patches on '{$this->server->name}'!\n\n";
 | 
				
			||||||
 | 
					            $description .= "*Error Details:*\n";
 | 
				
			||||||
 | 
					            $description .= '• OS: '.ucfirst($osId)."\n";
 | 
				
			||||||
 | 
					            $description .= "• Package Manager: {$packageManager}\n";
 | 
				
			||||||
 | 
					            $description .= "• Error: `{$error}`\n\n";
 | 
				
			||||||
 | 
					            $description .= "\n:link: <{$this->serverUrl}|Manage Server>";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            return new SlackMessage(
 | 
				
			||||||
 | 
					                title: 'Coolify: [ERROR] Server patch check failed',
 | 
				
			||||||
 | 
					                description: $description,
 | 
				
			||||||
 | 
					                color: SlackMessage::errorColor()
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
					        $totalUpdates = $this->patchData['total_updates'] ?? 0;
 | 
				
			||||||
        $updates = $this->patchData['updates'] ?? [];
 | 
					        $updates = $this->patchData['updates'] ?? [];
 | 
				
			||||||
        $osId = $this->patchData['osId'] ?? 'unknown';
 | 
					        $osId = $this->patchData['osId'] ?? 'unknown';
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								resources/views/emails/server-patches-error.blade.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								resources/views/emails/server-patches-error.blade.php
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
				
			|||||||
 | 
					<x-emails.layout>
 | 
				
			||||||
 | 
					Failed to check for package updates on your server {{ $name }}.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Error Details
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Operating System: {{ ucfirst($osId) }}
 | 
				
			||||||
 | 
					- Package Manager: {{ $package_manager }}
 | 
				
			||||||
 | 
					- Error: {{ $error }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					---
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You can manage your server and view more details in your [Coolify Dashboard]({{ $server_url }}).
 | 
				
			||||||
 | 
					</x-emails.layout>
 | 
				
			||||||
		Reference in New Issue
	
	Block a user