From 2e926291549c85447225a15983f663b3ec00c9eb Mon Sep 17 00:00:00 2001 From: 4gray Date: Sun, 5 Apr 2026 18:52:12 +0200 Subject: [PATCH] feat: refactor recent metadata handling for series content in Stalker player and recent features --- .../features/with-stalker-player.feature.ts | 20 ++++++++++++- .../features/with-stalker-recent.feature.ts | 30 ++++++++++++------- 2 files changed, 39 insertions(+), 11 deletions(-) diff --git a/libs/portal/stalker/data-access/src/lib/stores/features/with-stalker-player.feature.ts b/libs/portal/stalker/data-access/src/lib/stores/features/with-stalker-player.feature.ts index 63664f02c..6d243d33f 100644 --- a/libs/portal/stalker/data-access/src/lib/stores/features/with-stalker-player.feature.ts +++ b/libs/portal/stalker/data-access/src/lib/stores/features/with-stalker-player.feature.ts @@ -62,6 +62,21 @@ export function withStalkerPlayer() { const normalized = String(value ?? '').trim(); return normalized || fallback; }; + const getSeriesRecentMetadata = ( + selectedContentType: StalkerContentType + ): { + category_id?: 'series'; + is_series?: true; + } => { + if (selectedContentType !== 'series') { + return {}; + } + + return { + category_id: 'series', + is_series: true, + }; + }; return signalStoreFeature( withMethods( ( @@ -399,6 +414,8 @@ export function withStalkerPlayer() { ) => { const playlistId = storeState.currentPlaylist()?._id; if (!playlistId) return; + const selectedContentType = + storeState.selectedContentType(); const recentlyViewedItem: { id: string; title: string; @@ -410,8 +427,9 @@ export function withStalkerPlayer() { title, category_id: resolveCategoryId( item.category_id, - storeState.selectedContentType() + selectedContentType ), + ...getSeriesRecentMetadata(selectedContentType), added_at: Date.now(), }; playlistService diff --git a/libs/portal/stalker/data-access/src/lib/stores/features/with-stalker-recent.feature.ts b/libs/portal/stalker/data-access/src/lib/stores/features/with-stalker-recent.feature.ts index e4dbaef46..eb775c054 100644 --- a/libs/portal/stalker/data-access/src/lib/stores/features/with-stalker-recent.feature.ts +++ b/libs/portal/stalker/data-access/src/lib/stores/features/with-stalker-recent.feature.ts @@ -16,14 +16,25 @@ type RecentlyViewedPayload = StalkerPortalItem & { title?: string; }; -function resolveCategoryId( - value: unknown, - fallback: string -): string { +function resolveCategoryId(value: unknown, fallback: string): string { const normalized = String(value ?? '').trim(); return normalized || fallback; } +function getSeriesRecentMetadata(selectedContentType: string): { + category_id?: 'series'; + is_series?: true; +} { + if (selectedContentType !== 'series') { + return {}; + } + + return { + category_id: 'series', + is_series: true, + }; +} + /** * Recently-viewed concern methods. */ @@ -41,19 +52,18 @@ export function withStalkerRecent() { return { addToRecentlyViewed(item: RecentlyViewedPayload) { const portalId = storeContext.currentPlaylist()?._id; + const selectedContentType = + storeContext.selectedContentType(); const recentItem = { ...item, category_id: resolveCategoryId( item.category_id, - storeContext.selectedContentType() + selectedContentType ), + ...getSeriesRecentMetadata(selectedContentType), added_at: Date.now(), id: item.id ?? item.stream_id ?? '', - title: - item.title ?? - item.name ?? - item.o_name ?? - '', + title: item.title ?? item.name ?? item.o_name ?? '', }; playlistService .addPortalRecentlyViewed(portalId, recentItem)