fix(stalker): preserve specials season mapping

This commit is contained in:
4gray committed 2026-08-02 23:59:03 +02:00
1 parent 4fb04b340c
commit f73ab6b496
2 files changed
+33 -6

No files matched your search

@@ -82,6 +82,31 @@ describe('stalker-series.adapters', () => {
expect(firstEpisode.id).not.toBe(mapped['1'][1].id);
});
it('preserves the Specials season zero through VOD episode mapping', () => {
const mapped = mapVodSeriesEpisodes(
[
{
id: 'specials',
video_id: 'v1',
name: 'Specials',
season_number: '0',
episodes: [
{
id: 'special-1',
series_number: 1,
name: 'Special episode',
},
],
isLoading: false,
isExpanded: false,
},
],
{ parentSeriesId: 100 }
);
expect(mapped['0'][0].season).toBe(0);
});
it('generates deterministic VOD-series episode IDs for the same parent and provider episode', () => {
const seasons = [
{
@@ -74,10 +74,7 @@ function generateVodEpisodeId(options: {
);
}
function generateRegularEpisodeId(
seed: string,
episodeNum: number
): number {
function generateRegularEpisodeId(seed: string, episodeNum: number): number {
return hashString(`${seed}_ep_${episodeNum}`);
}
@@ -269,8 +266,13 @@ export function getVodSeriesSeasonNumber(
season: VodSeriesSeasonVm,
seasons: ReadonlyArray<VodSeriesSeasonVm>
): number {
const parsedSeasonNumber = Number(season.season_number);
if (Number.isInteger(parsedSeasonNumber) && parsedSeasonNumber > 0) {
const normalizedSeasonNumber = season.season_number.trim();
const parsedSeasonNumber = Number(normalizedSeasonNumber);
if (
normalizedSeasonNumber !== '' &&
Number.isInteger(parsedSeasonNumber) &&
parsedSeasonNumber >= 0
) {
return parsedSeasonNumber;
}