diff --git a/libs/portal/xtream/feature/src/lib/xtream-workspace-route-session.service.ts b/libs/portal/xtream/feature/src/lib/xtream-workspace-route-session.service.ts index dcd15b41b..63247e585 100644 --- a/libs/portal/xtream/feature/src/lib/xtream-workspace-route-session.service.ts +++ b/libs/portal/xtream/feature/src/lib/xtream-workspace-route-session.service.ts @@ -92,7 +92,7 @@ function toContentInitBlockReason( } function toCachedContentScope( - section: PortalRailSection | null + section: string | null ): XtreamCachedContentScope | null { switch (section) { case 'live': @@ -101,6 +101,13 @@ function toCachedContentScope( case 'search': case 'recently-added': return section; + // Neither reads one content type: both match TMDB titles against + // the whole catalog, so they take the aggregate scope search uses. + // Without it an expired or offline portal skips hydration and the + // page answers "not in your library" from an empty catalog. + case 'actor': + case 'discover': + return 'search'; default: return null; } diff --git a/libs/ui/shared-portals/src/lib/title-results/title-results.component.html b/libs/ui/shared-portals/src/lib/title-results/title-results.component.html index 72fd642bb..89a1db829 100644 --- a/libs/ui/shared-portals/src/lib/title-results/title-results.component.html +++ b/libs/ui/shared-portals/src/lib/title-results/title-results.component.html @@ -59,69 +59,75 @@ search_off

{{ emptyMessageKey() | translate }}

+ } @else { + +
+ @for ( + item of visibleItems(); + track item.mediaType + '-' + item.tmdbId + ) { + + } +
} -
- @for ( - item of visibleItems(); - track item.mediaType + '-' + item.tmdbId - ) { - - } -