From 2a823711df507343e87c1cc1f2bfcce0d5c75cea Mon Sep 17 00:00:00 2001 From: Botzy Date: Wed, 14 May 2025 18:57:13 +0300 Subject: [PATCH] feat(MetaDetails): use navigate instead window location --- src/routes/MetaDetails/MetaDetails.js | 11 +++++++---- src/routes/MetaDetails/StreamsList/StreamsList.js | 15 ++++++++------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/src/routes/MetaDetails/MetaDetails.js b/src/routes/MetaDetails/MetaDetails.js index 1a34e046a..c845204f2 100644 --- a/src/routes/MetaDetails/MetaDetails.js +++ b/src/routes/MetaDetails/MetaDetails.js @@ -1,7 +1,7 @@ // Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); -const { useParams } = require('react-router'); +const { useParams, useLocation, useNavigate } = require('react-router'); const classnames = require('classnames'); const { useServices } = require('stremio/services'); const { withCoreSuspender } = require('stremio/common'); @@ -15,6 +15,8 @@ const styles = require('./styles'); const MetaDetails = () => { const urlParams = useParams(); + const location = useLocation(); + const navigate = useNavigate(); const { core } = useServices(); const metaDetails = useMetaDetails(urlParams); const [season, setSeason] = useSeason(urlParams); @@ -79,10 +81,11 @@ const MetaDetails = () => { }, [setSeason]); const handleEpisodeSearch = React.useCallback((season, episode) => { const searchVideoHash = encodeURIComponent(`${urlParams.id}:${season}:${episode}`); - const url = window.location.hash; + const url = location.hash; + console.log(location); const searchVideoPath = url.replace(encodeURIComponent(urlParams.videoId), searchVideoHash); - window.location = searchVideoPath; - }, [urlParams, window.location]); + navigate(searchVideoPath.replace('#', '')); + }, [urlParams, location]); const renderBackgroundImageFallback = React.useCallback(() => null, []); const renderBackground = React.useMemo(() => !!( diff --git a/src/routes/MetaDetails/StreamsList/StreamsList.js b/src/routes/MetaDetails/StreamsList/StreamsList.js index 82ba57a51..e64958904 100644 --- a/src/routes/MetaDetails/StreamsList/StreamsList.js +++ b/src/routes/MetaDetails/StreamsList/StreamsList.js @@ -1,6 +1,7 @@ // Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); +const { useNavigate } = require('react-router'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { useTranslation } = require('react-i18next'); @@ -19,6 +20,7 @@ const StreamsList = ({ className, video, type, onEpisodeSearch, ...props }) => { const { core } = useServices(); const platform = usePlatform(); const profile = useProfile(); + const navigate = useNavigate(); const streamsContainerRef = React.useRef(null); const [selectedAddon, setSelectedAddon] = React.useState(ALL_ADDONS_KEY); const onAddonSelected = React.useCallback((event) => { @@ -30,14 +32,13 @@ const StreamsList = ({ className, video, type, onEpisodeSearch, ...props }) => { }, [profile, video]); const backButtonOnClick = React.useCallback(() => { if (video.deepLinks && typeof video.deepLinks.metaDetailsVideos === 'string') { - window.location.replace(video.deepLinks.metaDetailsVideos + ( - typeof video.season === 'number' ? - `?${new URLSearchParams({ 'season': video.season })}` - : - null - )); + const navigateTo = `${video.deepLinks.metaDetailsVideos}${ + typeof video.season === 'number' + ? `?${new URLSearchParams({ 'season': video.season })}` + : ''}`; + navigate(navigateTo.replace('#', '')); } else { - window.history.back(); + navigate(-1); } }, [video]); const countLoadingAddons = React.useMemo(() => {