diff --git a/server/lib/downloadtracker.ts b/server/lib/downloadtracker.ts
index cf29313e..e948c580 100644
--- a/server/lib/downloadtracker.ts
+++ b/server/lib/downloadtracker.ts
@@ -20,6 +20,7 @@ export interface DownloadingItem {
timeLeft: string;
estimatedCompletionTime: Date;
title: string;
+ downloadId: string;
episode?: EpisodeNumberResult;
}
@@ -95,6 +96,7 @@ class DownloadTracker {
status: item.status,
timeLeft: item.timeleft,
title: item.title,
+ downloadId: item.downloadId,
}));
if (queueItems.length > 0) {
@@ -172,6 +174,7 @@ class DownloadTracker {
timeLeft: item.timeleft,
title: item.title,
episode: item.episode,
+ downloadId: item.downloadId,
}));
if (queueItems.length > 0) {
diff --git a/src/components/StatusBadge/index.tsx b/src/components/StatusBadge/index.tsx
index e7cbbbba..0061a903 100644
--- a/src/components/StatusBadge/index.tsx
+++ b/src/components/StatusBadge/index.tsx
@@ -18,6 +18,7 @@ const messages = defineMessages('components.StatusBadge', {
playonplex: 'Play on {mediaServerName}',
openinarr: 'Open in {arr}',
managemedia: 'Manage {mediaType}',
+ seasonnumber: 'S{seasonNumber}',
seasonepisodenumber: 'S{seasonNumber}E{episodeNumber}',
});
@@ -107,22 +108,34 @@ const StatusBadge = ({
}
}
- const tooltipContent = (
-
- {downloadItem.map((status, index) => (
- -
-
-
- ))}
-
- );
+ const tooltipContent =
+ mediaType === 'tv' &&
+ downloadItem.length > 1 &&
+ downloadItem.every(
+ (item) =>
+ item.downloadId && item.downloadId === downloadItem[0].downloadId
+ ) ? (
+
+ ) : (
+
+ {downloadItem.map((status, index) => (
+ -
+
+
+ ))}
+
+ );
const badgeDownloadProgress = (
{inProgress && (
<>
- {mediaType === 'tv' && downloadItem[0].episode && (
-
- {intl.formatMessage(messages.seasonepisodenumber, {
- seasonNumber: downloadItem[0].episode.seasonNumber,
- episodeNumber: downloadItem[0].episode.episodeNumber,
- })}
-
- )}
+ {mediaType === 'tv' &&
+ downloadItem[0].episode &&
+ (downloadItem.length > 1 &&
+ downloadItem.every(
+ (item) =>
+ item.downloadId &&
+ item.downloadId === downloadItem[0].downloadId
+ ) ? (
+
+ {intl.formatMessage(messages.seasonnumber, {
+ seasonNumber: downloadItem[0].episode.seasonNumber,
+ })}
+
+ ) : (
+
+ {intl.formatMessage(messages.seasonepisodenumber, {
+ seasonNumber: downloadItem[0].episode.seasonNumber,
+ episodeNumber: downloadItem[0].episode.episodeNumber,
+ })}
+
+ ))}
>
)}
@@ -230,14 +256,27 @@ const StatusBadge = ({
{inProgress && (
<>
- {mediaType === 'tv' && downloadItem[0].episode && (
-
- {intl.formatMessage(messages.seasonepisodenumber, {
- seasonNumber: downloadItem[0].episode.seasonNumber,
- episodeNumber: downloadItem[0].episode.episodeNumber,
- })}
-
- )}
+ {mediaType === 'tv' &&
+ downloadItem[0].episode &&
+ (downloadItem.length > 1 &&
+ downloadItem.every(
+ (item) =>
+ item.downloadId &&
+ item.downloadId === downloadItem[0].downloadId
+ ) ? (
+
+ {intl.formatMessage(messages.seasonnumber, {
+ seasonNumber: downloadItem[0].episode.seasonNumber,
+ })}
+
+ ) : (
+
+ {intl.formatMessage(messages.seasonepisodenumber, {
+ seasonNumber: downloadItem[0].episode.seasonNumber,
+ episodeNumber: downloadItem[0].episode.episodeNumber,
+ })}
+
+ ))}
>
)}
@@ -283,14 +322,27 @@ const StatusBadge = ({
{inProgress && (
<>
- {mediaType === 'tv' && downloadItem[0].episode && (
-
- {intl.formatMessage(messages.seasonepisodenumber, {
- seasonNumber: downloadItem[0].episode.seasonNumber,
- episodeNumber: downloadItem[0].episode.episodeNumber,
- })}
-
- )}
+ {mediaType === 'tv' &&
+ downloadItem[0].episode &&
+ (downloadItem.length > 1 &&
+ downloadItem.every(
+ (item) =>
+ item.downloadId &&
+ item.downloadId === downloadItem[0].downloadId
+ ) ? (
+
+ {intl.formatMessage(messages.seasonnumber, {
+ seasonNumber: downloadItem[0].episode.seasonNumber,
+ })}
+
+ ) : (
+
+ {intl.formatMessage(messages.seasonepisodenumber, {
+ seasonNumber: downloadItem[0].episode.seasonNumber,
+ episodeNumber: downloadItem[0].episode.episodeNumber,
+ })}
+
+ ))}
>
)}
diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json
index f34aa5b4..5c9aa6fe 100644
--- a/src/i18n/locale/en.json
+++ b/src/i18n/locale/en.json
@@ -1056,6 +1056,7 @@
"components.StatusBadge.openinarr": "Open in {arr}",
"components.StatusBadge.playonplex": "Play on {mediaServerName}",
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
+ "components.StatusBadge.seasonnumber": "S{seasonNumber}",
"components.StatusBadge.status": "{status}",
"components.StatusBadge.status4k": "4K {status}",
"components.StatusChecker.appUpdated": "{applicationTitle} Updated",