{data?.seasons
- .filter(
- (season) =>
- season.seasonNumber !== 0 && season.episodeCount !== 0
- )
+ .filter((season) => season.episodeCount !== 0)
.map((season) => {
const seasonRequest = getSeasonRequest(
season.seasonNumber
@@ -637,7 +632,7 @@ const TvRequestModal = ({
{season.seasonNumber === 0
- ? intl.formatMessage(messages.extras)
+ ? intl.formatMessage(messages.specials)
: intl.formatMessage(messages.seasonnumber, {
number: season.seasonNumber,
})}
diff --git a/src/components/TvDetails/index.tsx b/src/components/TvDetails/index.tsx
index 2f44a7d8..e70346db 100644
--- a/src/components/TvDetails/index.tsx
+++ b/src/components/TvDetails/index.tsx
@@ -82,6 +82,7 @@ const messages = defineMessages({
seasonstitle: 'Seasons',
episodeCount: '{episodeCount, plural, one {# Episode} other {# Episodes}}',
seasonnumber: 'Season {seasonNumber}',
+ specials: 'Specials',
status4k: '4K {status}',
rtcriticsscore: 'Rotten Tomatoes Tomatometer',
rtaudiencescore: 'Rotten Tomatoes Audience Score',
@@ -200,6 +201,7 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
);
}
+ // Does NOT include "Specials"
const seasonCount = data.seasons.filter(
(season) => season.seasonNumber !== 0 && season.episodeCount !== 0
).length;
@@ -257,9 +259,17 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
return [...requestedSeasons, ...availableSeasons];
};
- const isComplete = seasonCount <= getAllRequestedSeasons(false).length;
+ const showHasSpecials = data.seasons.some(
+ (season) => season.seasonNumber == 0
+ );
+
+ const isComplete =
+ (showHasSpecials ? seasonCount + 1 : seasonCount) <=
+ getAllRequestedSeasons(false).length;
- const is4kComplete = seasonCount <= getAllRequestedSeasons(true).length;
+ const is4kComplete =
+ (showHasSpecials ? seasonCount + 1 : seasonCount) <=
+ getAllRequestedSeasons(true).length;
const streamingProviders =
data?.watchProviders?.find((provider) => provider.iso_3166_1 === region)
@@ -522,7 +532,6 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
{data.seasons
.slice()
.reverse()
- .filter((season) => season.seasonNumber !== 0)
.map((season) => {
const show4k =
settings.currentSettings.series4kEnabled &&
@@ -576,9 +585,11 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
>
- {intl.formatMessage(messages.seasonnumber, {
- seasonNumber: season.seasonNumber,
- })}
+ {season.seasonNumber == 0
+ ? intl.formatMessage(messages.specials)
+ : intl.formatMessage(messages.seasonnumber, {
+ seasonNumber: season.seasonNumber,
+ })}
{intl.formatMessage(messages.episodeCount, {
diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json
index 10165c9e..2d232b1a 100644
--- a/src/i18n/locale/en.json
+++ b/src/i18n/locale/en.json
@@ -399,6 +399,7 @@
"components.RequestBlock.rootfolder": "Root Folder",
"components.RequestBlock.seasons": "{seasonCount, plural, one {Season} other {Seasons}}",
"components.RequestBlock.server": "Destination Server",
+ "components.RequestBlock.specials": "Specials",
"components.RequestButton.approve4krequests": "Approve {requestCount, plural, one {4K Request} other {{requestCount} 4K Requests}}",
"components.RequestButton.approverequest": "Approve Request",
"components.RequestButton.approverequest4k": "Approve 4K Request",
@@ -419,6 +420,7 @@
"components.RequestCard.failedretry": "Something went wrong while retrying the request.",
"components.RequestCard.mediaerror": "{mediaType} Not Found",
"components.RequestCard.seasons": "{seasonCount, plural, one {Season} other {Seasons}}",
+ "components.RequestCard.specials": "Specials",
"components.RequestCard.tmdbid": "TMDB ID",
"components.RequestCard.tvdbid": "TheTVDB ID",
"components.RequestCard.unknowntitle": "Unknown Title",
@@ -432,6 +434,7 @@
"components.RequestList.RequestItem.requested": "Requested",
"components.RequestList.RequestItem.requesteddate": "Requested",
"components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {Season} other {Seasons}}",
+ "components.RequestList.RequestItem.specials": "Specials",
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
"components.RequestList.RequestItem.unknowntitle": "Unknown Title",
@@ -471,7 +474,6 @@
"components.RequestModal.cancel": "Cancel Request",
"components.RequestModal.edit": "Edit Request",
"components.RequestModal.errorediting": "Something went wrong while editing the request.",
- "components.RequestModal.extras": "Extras",
"components.RequestModal.numberofepisodes": "# of Episodes",
"components.RequestModal.pending4krequest": "Pending 4K Request",
"components.RequestModal.pendingapproval": "Your request is pending approval.",
@@ -498,6 +500,7 @@
"components.RequestModal.seasonnumber": "Season {number}",
"components.RequestModal.selectmovies": "Select Movie(s)",
"components.RequestModal.selectseason": "Select Season(s)",
+ "components.RequestModal.specials": "Specials",
"components.ResetPassword.confirmpassword": "Confirm Password",
"components.ResetPassword.email": "Email Address",
"components.ResetPassword.emailresetlink": "Email Recovery Link",
@@ -1027,6 +1030,7 @@
"components.TvDetails.seasonstitle": "Seasons",
"components.TvDetails.showtype": "Series Type",
"components.TvDetails.similar": "Similar Series",
+ "components.TvDetails.specials": "Specials",
"components.TvDetails.status4k": "4K {status}",
"components.TvDetails.streamingproviders": "Currently Streaming On",
"components.TvDetails.tmdbuserscore": "TMDB User Score",
|