diff --git a/frontend/js/components/details/downloadProgress.js b/frontend/js/components/details/downloadProgress.js
new file mode 100644
index 0000000..0a2b12f
--- /dev/null
+++ b/frontend/js/components/details/downloadProgress.js
@@ -0,0 +1,77 @@
+import React from "react";
+import PropTypes from "prop-types";
+import { useSelector } from "react-redux";
+import { useHistory } from "react-router-dom";
+
+export const DownloadProgress = ({ imdbId, season, episode }) => {
+ let history = useHistory();
+ const torrentGroup = useSelector((state) =>
+ state.torrents.torrents.get(imdbId)
+ );
+ if (!torrentGroup || torrentGroup.length === 0) {
+ return null;
+ }
+
+ let torrent;
+ const type = torrentGroup[0].type;
+ switch (type) {
+ case "movie":
+ torrent = torrentGroup[0];
+ break;
+ case "episode": {
+ if (!season || !episode) {
+ return null;
+ }
+
+ const torrents = torrentGroup.filter(
+ (torrent) => torrent.episode === episode && torrent.season === season
+ );
+ if (torrents.length !== 1) {
+ return null;
+ }
+ torrent = torrents[0];
+
+ break;
+ }
+ default:
+ return null;
+ }
+
+ if (!torrent || !torrent.status) {
+ return null;
+ }
+
+ const progress = Number(torrent.status.percent_done).toFixed(1);
+ if (progress === 0) {
+ return null;
+ }
+
+ const handleClick = () => {
+ history.push("/torrents/list");
+ };
+
+ return (
+
+ );
+};
+
+DownloadProgress.propTypes = {
+ imdbId: PropTypes.string.isRequired,
+ season: PropTypes.number,
+ episode: PropTypes.number,
+};
diff --git a/frontend/js/components/list/details.js b/frontend/js/components/list/details.js
index 6af8e6f..c00ed7b 100644
--- a/frontend/js/components/list/details.js
+++ b/frontend/js/components/list/details.js
@@ -12,6 +12,7 @@ import { Rating } from "../details/rating";
import { ReleaseDate } from "../details/releaseDate";
import { Runtime } from "../details/runtime";
import { Title } from "../details/title";
+import { DownloadProgress } from "../details/downloadProgress";
const ListDetails = (props) => {
if (!props.data || Object.keys(props.data).length === 0) {
@@ -41,6 +42,7 @@ const ListDetails = (props) => {
subtitles={props.data.subtitles}
/>
+
{
subtitles={subtitles}
/>
+
+
+
diff --git a/frontend/js/components/shows/details/episode.js b/frontend/js/components/shows/details/episode.js
index bc4738e..c60a17d 100644
--- a/frontend/js/components/shows/details/episode.js
+++ b/frontend/js/components/shows/details/episode.js
@@ -11,6 +11,7 @@ import { PolochonMetadata } from "../../details/polochon";
import { ReleaseDate } from "../../details/releaseDate";
import { Runtime } from "../../details/runtime";
import { Title } from "../../details/title";
+import { DownloadProgress } from "../../details/downloadProgress";
import { DownloadAndStream } from "../../buttons/download";
import { ShowMore } from "../../buttons/showMore";
@@ -62,6 +63,7 @@ export const Episode = ({ season, episode }) => {
/>
+