diff --git a/src/routes/Intro/Intro.js b/src/routes/Intro/Intro.js index b09d82327..26b9a3586 100644 --- a/src/routes/Intro/Intro.js +++ b/src/routes/Intro/Intro.js @@ -2,7 +2,7 @@ const React = require('react'); const { useTranslation } = require('react-i18next'); -const PropTypes = require('prop-types'); +const { useSearchParams, useNavigate } = require('react-router-dom'); const classnames = require('classnames'); const { default: Icon } = require('@stremio/stremio-icons/react'); const { Modal } = require('stremio-router'); @@ -20,7 +20,9 @@ const styles = require('./styles'); const SIGNUP_FORM = 'signup'; const LOGIN_FORM = 'login'; -const Intro = ({ queryParams }) => { +const Intro = () => { + const [queryParams, setQueryParams] = useSearchParams(); + const navigate = useNavigate(); const { core } = useServices(); const { t } = useTranslation(); const routeFocused = useRouteFocused(); @@ -164,7 +166,7 @@ const Intro = ({ queryParams }) => { dispatch({ type: 'error', error: 'You must accept the Terms of Service' }); return; } - window.location = '#/'; + navigate('/'); }, [state.termsAccepted]); const signup = React.useCallback(() => { if (typeof state.email !== 'string' || state.email.length === 0 || !emailRef.current.validity.valid) { @@ -251,7 +253,7 @@ const Intro = ({ queryParams }) => { }, []); const switchFormOnClick = React.useCallback(() => { const queryParams = new URLSearchParams([['form', state.form === SIGNUP_FORM ? LOGIN_FORM : SIGNUP_FORM]]); - window.location = `#/intro?${queryParams.toString()}`; + setQueryParams(queryParams); }, [state.form]); React.useEffect(() => { if ([LOGIN_FORM, SIGNUP_FORM].includes(queryParams.get('form'))) { @@ -274,7 +276,7 @@ const Intro = ({ queryParams }) => { case 'UserAuthenticated': { closeLoaderModal(); if (routeFocused) { - window.location = '#/'; + navigate('/'); } break; } @@ -435,8 +437,4 @@ const Intro = ({ queryParams }) => { ); }; -Intro.propTypes = { - queryParams: PropTypes.instanceOf(URLSearchParams) -}; - module.exports = Intro;