From 7a66e54651409884f8673283c5aeef9d784fdfd5 Mon Sep 17 00:00:00 2001 From: ArtificialSloth Date: Tue, 17 Sep 2024 02:23:04 -0400 Subject: [PATCH 1/2] feat: MetaDetails back button behavior --- .../MetaDetails/StreamsList/StreamsList.js | 61 +++++++++++-------- .../MetaDetails/VideosList/Video/Video.js | 21 +++---- 2 files changed, 44 insertions(+), 38 deletions(-) diff --git a/src/routes/MetaDetails/StreamsList/StreamsList.js b/src/routes/MetaDetails/StreamsList/StreamsList.js index ae7d2416e..6dd4f1c6f 100644 --- a/src/routes/MetaDetails/StreamsList/StreamsList.js +++ b/src/routes/MetaDetails/StreamsList/StreamsList.js @@ -20,8 +20,17 @@ const StreamsList = ({ className, video, ...props }) => { setSelectedAddon(event.value); }, []); const backButtonOnClick = React.useCallback(() => { - window.history.back(); - }, []); + if (video.deepLinks && typeof video.deepLinks.metaDetailsVideos === 'string') { + window.location.replace(video.deepLinks.metaDetailsVideos + ( + typeof video.season === 'number' ? + `?${new URLSearchParams({'season': video.season})}` + : + null + )); + } else { + window.history.back(); + } + }, [video]); const countLoadingAddons = React.useMemo(() => { return props.streams.filter((stream) => stream.content.type === 'Loading').length; }, [props.streams]); @@ -78,6 +87,30 @@ const StreamsList = ({ className, video, ...props }) => { }, [streamsByAddon, selectedAddon]); return (
+
+ { + video ? + + +
+ {`S${video?.season}E${video?.episode} ${(video?.title)}`} +
+
+ : + null + } + { + Object.keys(streamsByAddon).length > 1 ? + + : + null + } +
{ props.streams.length === 0 ?
@@ -109,30 +142,6 @@ const StreamsList = ({ className, video, ...props }) => { : null } -
- { - video ? - - -
- {`S${video?.season}E${video?.episode} ${(video?.title)}`} -
-
- : - null - } - { - Object.keys(streamsByAddon).length > 1 ? - - : - null - } -
{filteredStreams.map((stream, index) => ( { - return deepLinks ? - typeof deepLinks.player === 'string' ? - deepLinks.player - : - typeof deepLinks.metaDetailsStreams === 'string' ? - deepLinks.metaDetailsStreams - : - null - : - null; + const videoButtonOnClick = React.useCallback(() => { + if (deepLinks) { + if (typeof deepLinks.player === 'string') { + window.location = deepLinks.player; + } else if (typeof deepLinks.metaDetailsStreams === 'string') { + window.location.replace(deepLinks.metaDetailsStreams); + } + } }, [deepLinks]); const renderLabel = React.useMemo(() => function renderLabel({ className, id, title, thumbnail, episode, released, upcoming, watched, progress, scheduled, children, ...props }) { return ( @@ -171,7 +168,7 @@ const Video = ({ className, id, title, thumbnail, episode, released, upcoming, w watched={watched} progress={progress} scheduled={scheduled} - href={href} + onClick={videoButtonOnClick} {...props} onMouseUp={popupLabelOnMouseUp} onLongPress={popupLabelOnLongPress} From b002a1c1943fd30e47356776e03496b31cb5b842 Mon Sep 17 00:00:00 2001 From: ArtificialSloth Date: Tue, 17 Sep 2024 04:41:48 -0400 Subject: [PATCH 2/2] fixed indentation --- src/routes/MetaDetails/StreamsList/StreamsList.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/MetaDetails/StreamsList/StreamsList.js b/src/routes/MetaDetails/StreamsList/StreamsList.js index 6dd4f1c6f..840664c8b 100644 --- a/src/routes/MetaDetails/StreamsList/StreamsList.js +++ b/src/routes/MetaDetails/StreamsList/StreamsList.js @@ -26,7 +26,7 @@ const StreamsList = ({ className, video, ...props }) => { `?${new URLSearchParams({'season': video.season})}` : null - )); + )); } else { window.history.back(); }