feat(portals): add "View in portal" action to inline collection details

Details opened from the dashboard, global favorites/recent, or a portal's
own favorites/recent tabs render full-width without the category sidebar,
so there was no way back to the title's place in its portal.

A shared `app-view-in-portal-action` renders a separate-row action below
the main hero buttons. It is gated on the new `VIEW_IN_PORTAL_HANDOFF`
token, provided only by the two collection-detail wrappers, so
router-mounted portal details never show it without any URL sniffing.

Targets come from `getUnifiedCollectionDetailNavigation()`, which unlike
`getUnifiedCollectionNavigation` never degrades to a category- or
section-only route: an Xtream item without a resolvable category and
positive id keeps the action hidden rather than promising a jump to the
title and landing in a list. Unlike the download handoff it does not pass
`detailPresentation: 'provider-only'` — the item exists in the provider
catalog, so the full detail is wanted. Stalker carries `stalkerReturnTo`
so back returns to the originating collection.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
4grayandClaude Fable 5 committed 2026-08-12 07:58:28 +02:00
1 parent 4bcd4bd390
commit db1ec7cf5e
40 files changed
+716 -7

No files matched your search

+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "تصفح جميع الأفلام",
"BROWSE_ALL_SERIES": "تصفح جميع المسلسلات",
"BROWSE_ALL_LIVE": "تصفح جميع قنوات البث المباشر",
"VIEW_IN_PORTAL": "عرض في البوابة",
"VIEW_IN_PORTAL_TOOLTIP": "فتح في {{name}}",
"SIDEBAR": {
"MAIN": "الرئيسية",
"MOVIES": "الأفلام",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "تصفح جميع الأفلام",
"BROWSE_ALL_SERIES": "تصفح جميع السلاسل",
"BROWSE_ALL_LIVE": "تصفح جميع البث المباشر",
"VIEW_IN_PORTAL": "شوف فالبوابة",
"VIEW_IN_PORTAL_TOOLTIP": "افتح ف {{name}}",
"SIDEBAR": {
"MAIN": "الرئيسي",
"MOVIES": "الأفلام",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Прагледзець усе фільмы",
"BROWSE_ALL_SERIES": "Прагледзець усе серыялы",
"BROWSE_ALL_LIVE": "Прагледзець увесь прамы эфір",
"VIEW_IN_PORTAL": "Паказаць у партале",
"VIEW_IN_PORTAL_TOOLTIP": "Адкрыць у {{name}}",
"SIDEBAR": {
"MAIN": "Галоўная",
"MOVIES": "Фільмы",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Alle Filme durchsuchen",
"BROWSE_ALL_SERIES": "Alle Serien durchsuchen",
"BROWSE_ALL_LIVE": "Gesamtes Live-TV durchsuchen",
"VIEW_IN_PORTAL": "Im Portal anzeigen",
"VIEW_IN_PORTAL_TOOLTIP": "In {{name}} öffnen",
"SIDEBAR": {
"MAIN": "Allgemein",
"MOVIES": "Filme",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Περιήγηση σε όλες τις ταινίες",
"BROWSE_ALL_SERIES": "Περιήγηση σε όλες τις σειρές",
"BROWSE_ALL_LIVE": "Περιήγηση σε όλη τη ζωντανή TV",
"VIEW_IN_PORTAL": "Προβολή στην πύλη",
"VIEW_IN_PORTAL_TOOLTIP": "Άνοιγμα σε {{name}}",
"SIDEBAR": {
"MAIN": "Κύριο",
"MOVIES": "Ταινίες",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Browse all movies",
"BROWSE_ALL_SERIES": "Browse all series",
"BROWSE_ALL_LIVE": "Browse all live TV",
"VIEW_IN_PORTAL": "View in portal",
"VIEW_IN_PORTAL_TOOLTIP": "Open in {{name}}",
"SIDEBAR": {
"MAIN": "Main",
"MOVIES": "Movies",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Ver todas las películas",
"BROWSE_ALL_SERIES": "Ver todas las series",
"BROWSE_ALL_LIVE": "Ver toda la TV en vivo",
"VIEW_IN_PORTAL": "Ver en el portal",
"VIEW_IN_PORTAL_TOOLTIP": "Abrir en {{name}}",
"SIDEBAR": {
"MAIN": "Principal",
"MOVIES": "Películas",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Parcourir tous les films",
"BROWSE_ALL_SERIES": "Parcourir toutes les séries",
"BROWSE_ALL_LIVE": "Parcourir toute la TV en direct",
"VIEW_IN_PORTAL": "Voir dans le portail",
"VIEW_IN_PORTAL_TOOLTIP": "Ouvrir dans {{name}}",
"SIDEBAR": {
"MAIN": "Principal",
"MOVIES": "Films",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Összes film böngészése",
"BROWSE_ALL_SERIES": "Összes sorozat böngészése",
"BROWSE_ALL_LIVE": "Összes élő csatorna böngészése",
"VIEW_IN_PORTAL": "Megtekintés a portálon",
"VIEW_IN_PORTAL_TOOLTIP": "Megnyitás: {{name}}",
"SIDEBAR": {
"MAIN": "Főmenü",
"MOVIES": "Filmek",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Sfoglia tutti i film",
"BROWSE_ALL_SERIES": "Sfoglia tutte le serie",
"BROWSE_ALL_LIVE": "Sfoglia tutta la TV in diretta",
"VIEW_IN_PORTAL": "Mostra nel portale",
"VIEW_IN_PORTAL_TOOLTIP": "Apri in {{name}}",
"SIDEBAR": {
"MAIN": "Principale",
"MOVIES": "Film",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "すべての映画を表示",
"BROWSE_ALL_SERIES": "すべてのシリーズを表示",
"BROWSE_ALL_LIVE": "すべてのライブTVを表示",
"VIEW_IN_PORTAL": "ポータルで表示",
"VIEW_IN_PORTAL_TOOLTIP": "{{name}}で開く",
"SIDEBAR": {
"MAIN": "メイン",
"MOVIES": "映画",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "모든 영화 둘러보기",
"BROWSE_ALL_SERIES": "모든 시리즈 둘러보기",
"BROWSE_ALL_LIVE": "모든 라이브 TV 둘러보기",
"VIEW_IN_PORTAL": "포털에서 보기",
"VIEW_IN_PORTAL_TOOLTIP": "{{name}}에서 열기",
"SIDEBAR": {
"MAIN": "메인",
"MOVIES": "영화",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Bekijk alle films",
"BROWSE_ALL_SERIES": "Bekijk alle series",
"BROWSE_ALL_LIVE": "Bekijk alle live tv",
"VIEW_IN_PORTAL": "In portal bekijken",
"VIEW_IN_PORTAL_TOOLTIP": "Openen in {{name}}",
"SIDEBAR": {
"MAIN": "Hoofd",
"MOVIES": "Films",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Przeglądaj wszystkie filmy",
"BROWSE_ALL_SERIES": "Przeglądaj wszystkie seriale",
"BROWSE_ALL_LIVE": "Przeglądaj całą telewizję na żywo",
"VIEW_IN_PORTAL": "Pokaż w portalu",
"VIEW_IN_PORTAL_TOOLTIP": "Otwórz w {{name}}",
"SIDEBAR": {
"MAIN": "Główne",
"MOVIES": "Filmy",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Ver todos os filmes",
"BROWSE_ALL_SERIES": "Ver todas as séries",
"BROWSE_ALL_LIVE": "Ver toda a TV ao vivo",
"VIEW_IN_PORTAL": "Ver no portal",
"VIEW_IN_PORTAL_TOOLTIP": "Abrir em {{name}}",
"SIDEBAR": {
"MAIN": "Principal",
"MOVIES": "Filmes",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Все фильмы",
"BROWSE_ALL_SERIES": "Все сериалы",
"BROWSE_ALL_LIVE": "Всё Live TV",
"VIEW_IN_PORTAL": "Открыть в портале",
"VIEW_IN_PORTAL_TOOLTIP": "Открыть в {{name}}",
"SIDEBAR": {
"MAIN": "Главная",
"MOVIES": "Фильмы",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "Tüm filmlere göz at",
"BROWSE_ALL_SERIES": "Tüm dizilere göz at",
"BROWSE_ALL_LIVE": "Tüm canlı TV'ye göz at",
"VIEW_IN_PORTAL": "Portalda görüntüle",
"VIEW_IN_PORTAL_TOOLTIP": "{{name}} içinde aç",
"SIDEBAR": {
"MAIN": "Ana Menü",
"MOVIES": "Filmler",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "浏览所有电影",
"BROWSE_ALL_SERIES": "浏览所有剧集",
"BROWSE_ALL_LIVE": "浏览所有直播电视",
"VIEW_IN_PORTAL": "在门户中查看",
"VIEW_IN_PORTAL_TOOLTIP": "在{{name}}中打开",
"SIDEBAR": {
"MAIN": "主页",
"MOVIES": "电影",
+2
View File
@@ -958,6 +958,8 @@
"BROWSE_ALL_MOVIES": "瀏覽所有電影",
"BROWSE_ALL_SERIES": "瀏覽所有影集",
"BROWSE_ALL_LIVE": "瀏覽所有直播電視",
"VIEW_IN_PORTAL": "在 Portal 中檢視",
"VIEW_IN_PORTAL_TOOLTIP": "在 {{name}} 中開啟",
"SIDEBAR": {
"MAIN": "主頁",
"MOVIES": "電影",