diff --git a/src/Controller/DownloadController.php b/src/Controller/DownloadController.php
index d955046..18579e4 100644
--- a/src/Controller/DownloadController.php
+++ b/src/Controller/DownloadController.php
@@ -3,6 +3,7 @@
namespace App\Controller;
use App\Download\Action\Input\DownloadMediaInput;
+use App\Download\Framework\Repository\DownloadRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Messenger\MessageBusInterface;
@@ -11,6 +12,7 @@ use Symfony\Component\Routing\Attribute\Route;
class DownloadController extends AbstractController
{
public function __construct(
+ private DownloadRepository $downloadRepository,
private MessageBusInterface $bus,
) {}
@@ -18,6 +20,15 @@ class DownloadController extends AbstractController
public function download(
DownloadMediaInput $input,
): Response {
+ $download = $this->downloadRepository->insert(
+ $input->url,
+ $input->title,
+ $input->filename,
+ $input->imdbId,
+ $input->mediaType,
+ "",
+ );
+ $input->downloadId = $download->getId();
try {
$this->bus->dispatch($input->toCommand());
} catch (\Throwable $exception) {
diff --git a/src/Download/Action/Command/DownloadMediaCommand.php b/src/Download/Action/Command/DownloadMediaCommand.php
index 10730b2..98b27ca 100644
--- a/src/Download/Action/Command/DownloadMediaCommand.php
+++ b/src/Download/Action/Command/DownloadMediaCommand.php
@@ -15,5 +15,6 @@ class DownloadMediaCommand implements CommandInterface
public string $filename,
public string $mediaType,
public string $imdbId,
+ public ?int $downloadId = null,
) {}
}
\ No newline at end of file
diff --git a/src/Download/Action/Handler/DownloadMediaHandler.php b/src/Download/Action/Handler/DownloadMediaHandler.php
index cfaada3..9d1ceeb 100644
--- a/src/Download/Action/Handler/DownloadMediaHandler.php
+++ b/src/Download/Action/Handler/DownloadMediaHandler.php
@@ -21,14 +21,19 @@ readonly class DownloadMediaHandler implements HandlerInterface
public function handle(CommandInterface $command): ResultInterface
{
- $download = $this->downloadRepository->insert(
- $command->url,
- $command->title,
- $command->filename,
- $command->imdbId,
- $command->mediaType,
- ""
- );
+ if (null === $command->downloadId) {
+ $download = $this->downloadRepository->insert(
+ $command->url,
+ $command->title,
+ $command->filename,
+ $command->imdbId,
+ $command->mediaType,
+ ""
+ );
+ } else {
+ $download = $this->downloadRepository->find($command->downloadId);
+ }
+
try {
$this->downloadRepository->updateStatus($download->getId(), 'In Progress');
diff --git a/src/Download/Action/Input/DownloadMediaInput.php b/src/Download/Action/Input/DownloadMediaInput.php
index 1565776..c7acce5 100644
--- a/src/Download/Action/Input/DownloadMediaInput.php
+++ b/src/Download/Action/Input/DownloadMediaInput.php
@@ -25,6 +25,8 @@ class DownloadMediaInput implements InputInterface
#[SourceRequest('imdbId')]
public string $imdbId,
+
+ public ?int $downloadId = null,
) {}
public function toCommand(): CommandInterface
@@ -35,6 +37,7 @@ class DownloadMediaInput implements InputInterface
$this->filename,
$this->mediaType,
$this->imdbId,
+ $this->downloadId,
);
}
}
\ No newline at end of file
diff --git a/templates/broadcast/Download.stream.html.twig b/templates/broadcast/Download.stream.html.twig
index 4ee1c83..0bbd270 100644
--- a/templates/broadcast/Download.stream.html.twig
+++ b/templates/broadcast/Download.stream.html.twig
@@ -11,7 +11,13 @@
{{ entity.progress }}
-
+
+
+
+
+
-
+
- {{ entity.title }}
-
-
-
- {{ entity.progress }}
-
-
-
+ {{ entity.title }}
+
+
+
+ {{ entity.progress }}
+
+
+
+
+
+ {{ entity.title }}
+
+
+
+ {{ entity.progress }}
+
+
+
| - - {{ download.progress }} - + + {{ download.progress }} + |