<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class TurboMiddleware
{
    public function handle(Request $request, Closure $next): Response
    {
        $response = $next($request);
        
        // Solo para respuestas HTML y peticiones Turbo
        if ($this->isTurboRequest($request) && $response->headers->get('Content-Type') === 'text/html; charset=UTF-8') {
            $content = $response->getContent();
            
            // Si es una redirección, dejamos que Turbo la maneje
            if ($response->isRedirect()) {
                return $response;
            }
            
            // Envolver todo el contenido en un turbo-frame
            $wrappedContent = <<<HTML
            <turbo-frame id="main-content">
                $content
            </turbo-frame>
            HTML;
            
            $response->setContent($wrappedContent);
        }
        
        return $response;
    }
    
    protected function isTurboRequest(Request $request): bool
    {
        return $request->header('Turbo-Frame') || 
               str_contains($request->header('Accept', ''), 'text/vnd.turbo-stream.html');
    }
}