fix: missing/exists badge on tvshows results

This commit is contained in:
2025-07-13 21:13:42 -05:00
parent 8b50b50466
commit accfa9c9bf
10 changed files with 228 additions and 29 deletions

View File

@@ -0,0 +1,40 @@
<?php
namespace App\Library\Framework\Controller;
use App\Library\Action\Handler\SearchHandler;
use App\Library\Action\Input\SearchInput;
use App\Library\Action\Result\SearchResult;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\UX\Turbo\TurboBundle;
class Api extends AbstractController
{
#[Route('/api/library/search', name: 'api.library.search', methods: ['GET'])]
public function search(SearchInput $input, SearchHandler $handler, Request $request): Response
{
$result = $handler->handle($input->toCommand());
if ($request->headers->get('Turbo-Frame')) {
return $this->sendFragmentResponse($result, $request);
}
return $this->json($handler->handle($input->toCommand()));
}
private function sendFragmentResponse(SearchResult $result, Request $request): Response
{
$request->setRequestFormat(TurboBundle::STREAM_FORMAT);
return $this->renderBlock(
'search/fragments.html.twig',
$request->query->get('block'),
[
'result' => $result,
'target' => $request->query->get('target')
]
);
}
}