wip: working episode pagination, season switcher, monitor only new content
This commit is contained in:
44
src/Twig/Components/TvEpisodeList.php
Normal file
44
src/Twig/Components/TvEpisodeList.php
Normal file
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
namespace App\Twig\Components;
|
||||
|
||||
use App\Search\Action\Command\GetMediaInfoCommand;
|
||||
use App\Search\Action\Handler\GetMediaInfoHandler;
|
||||
use App\Search\TvEpisodePaginator;
|
||||
use Symfony\UX\LiveComponent\Attribute\AsLiveComponent;
|
||||
use Symfony\UX\LiveComponent\Attribute\LiveProp;
|
||||
use Symfony\UX\LiveComponent\DefaultActionTrait;
|
||||
|
||||
#[AsLiveComponent]
|
||||
final class TvEpisodeList
|
||||
{
|
||||
use DefaultActionTrait;
|
||||
use PaginateTrait;
|
||||
|
||||
#[LiveProp(writable: true)]
|
||||
public string $title = "";
|
||||
|
||||
#[LiveProp(writable: true)]
|
||||
public string $imdbId = "";
|
||||
|
||||
#[LiveProp(writable: true)]
|
||||
public string $tmdbId = "";
|
||||
|
||||
#[LiveProp(writable: true)]
|
||||
public int $season = 1;
|
||||
|
||||
public function __construct(
|
||||
private GetMediaInfoHandler $getMediaInfoHandler,
|
||||
) {}
|
||||
|
||||
public function getEpisodes()
|
||||
{
|
||||
$results = $this->getMediaInfoHandler->handle(new GetMediaInfoCommand($this->imdbId, "tvshows", $this->season));
|
||||
return new TvEpisodePaginator()->paginate($results, $this->pageNumber, $this->perPage);
|
||||
}
|
||||
|
||||
public function setPage(int $page)
|
||||
{
|
||||
$this->pageNumber = $page;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user