<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>{{ $title ?? 'Coolify' }}</title>
    <meta name="csrf-token" content="{{ csrf_token() }}">
    @vite(['resources/js/app.js', 'resources/css/app.css'])
    <style>
        [x-cloak] {
            display: none !important;
        }
    </style>
    @livewireStyles
</head>

<body x-data="confirmModal">
    @auth
        <x-navbar />
    @endauth
    <main>
        {{ $slot }}
    </main>

    <x-confirm-modal />
    @livewireScripts
    @auth
        <script>
            function checkIfIamDead() {
                checkIfIamDeadInterval = setInterval(async () => {
                    console.log('Checking server\'s pulse...')
                    const res = await fetch('/api/health');
                    if (!res.ok) {
                        console.log('I\'m dead. Charging... Standby... Bzz... Bzz...')
                    } else {
                        console.log('I\'m alive!');
                        checkHealth();
                        if (checkIfIamDeadInterval) clearInterval(checkIfIamDeadInterval);
                    }

                    return;
                }, 2000);
            }

            function checkHealth() {
                checkHealthInterval = setInterval(async () => {
                    console.log('Checking server\'s health...')
                    const res = await fetch('/api/health');
                    if (res.ok) {
                        console.log('Server is back online. Reloading...')
                        if (checkHealthInterval) clearInterval(checkHealthInterval);
                        window.location.reload();
                    } else {
                        console.log('Waiting for server to come back from dead...');
                    }
                    return;
                }, 2000);
            }
            Livewire.on('updateInitiated', () => {
                let checkHealthInterval = null;
                let checkIfIamDeadInterval = null;
                console.log('Update initiated. Waiting for server to be dead...')
                checkIfIamDead();
            })
        </script>
    @endauth
</body>

</html>