diff --git a/resources/js/app.js b/resources/js/app.js index 8fcf5a2..3abade8 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -13,4 +13,16 @@ if (document.querySelector('[data-requires-reverb]')) { forceTLS: (import.meta.env.VITE_REVERB_SCHEME ?? 'https') === 'https', enabledTransports: ['ws', 'wss'], }); + + // Handle WebSocket connection status events + const dispatchStatus = (connected) => { + window.dispatchEvent(new CustomEvent('ws-status', { + detail: { connected } + })); + }; + + window.Echo.connector.pusher.connection.bind('connected', () => dispatchStatus(true)); + window.Echo.connector.pusher.connection.bind('unavailable', () => dispatchStatus(false)); + window.Echo.connector.pusher.connection.bind('disconnected', () => dispatchStatus(false)); + window.Echo.connector.pusher.connection.bind('failed', () => dispatchStatus(false)); } diff --git a/resources/views/components/layouts/app.blade.php b/resources/views/components/layouts/app.blade.php index 32ce6cf..b36e783 100644 --- a/resources/views/components/layouts/app.blade.php +++ b/resources/views/components/layouts/app.blade.php @@ -25,6 +25,7 @@ + @notify.window="addToast($event.detail.message, $event.detail.type)" + @ws-status.window="wsConnected = $event.detail.connected"> {{ $slot }} diff --git a/resources/views/livewire/mailbox.blade.php b/resources/views/livewire/mailbox.blade.php index c5ab24f..de67a21 100644 --- a/resources/views/livewire/mailbox.blade.php +++ b/resources/views/livewire/mailbox.blade.php @@ -124,7 +124,8 @@
-
+
Active Mailbox