diff --git a/src/routes/Intro/Intro.js b/src/routes/Intro/Intro.js index c1fd82d74..bcdd74aff 100644 --- a/src/routes/Intro/Intro.js +++ b/src/routes/Intro/Intro.js @@ -1,6 +1,7 @@ // Copyright (C) 2017-2023 Smart code 203358507 const React = require('react'); +const { useTranslation } = require('react-i18next'); const PropTypes = require('prop-types'); const classnames = require('classnames'); const { default: Icon } = require('@stremio/stremio-icons/react'); @@ -18,8 +19,9 @@ const LOGIN_FORM = 'login'; const Intro = ({ queryParams }) => { const { core } = useServices(); + const { t } = useTranslation(); const routeFocused = useRouteFocused(); - const startFacebookLogin = useFacebookLogin(); + const [startFacebookLogin, stopFacebookLogin] = useFacebookLogin(); const emailRef = React.useRef(null); const passwordRef = React.useRef(null); const confirmPasswordRef = React.useRef(null); @@ -100,6 +102,10 @@ const Intro = ({ queryParams }) => { dispatch({ type: 'error', error: error.message }); }); }, []); + const cancelLoginWithFacebook = React.useCallback(() => { + stopFacebookLogin(); + closeLoaderModal(); + }, []); const loginWithEmail = React.useCallback(() => { if (typeof state.email !== 'string' || state.email.length === 0 || !emailRef.current.validity.valid) { dispatch({ type: 'error', error: 'Invalid email' }); @@ -385,6 +391,9 @@ const Intro = ({ queryParams }) => {
Authenticating...
+
: diff --git a/src/routes/Intro/styles.less b/src/routes/Intro/styles.less index 1b1200a7c..61a62aff1 100644 --- a/src/routes/Intro/styles.less +++ b/src/routes/Intro/styles.less @@ -200,7 +200,8 @@ flex-direction: column; align-items: center; justify-content: center; - padding: 2rem; + gap: 1rem; + padding: 2.5rem; border-radius: var(--border-radius); background-color: var(--modal-background-color); @@ -218,7 +219,6 @@ flex: none; width: 5rem; height: 5rem; - margin-bottom: 1rem; color: var(--primary-foreground-color); animation: 1s linear infinite alternate flash; } @@ -228,6 +228,27 @@ color: var(--primary-foreground-color); animation: 1s linear infinite alternate flash; } + + .button { + display: flex; + flex-direction: row; + align-items: center; + justify-content: center; + height: 3.5rem; + width: 100%; + border-radius: 3.5rem; + padding: 0 1rem; + margin-top: 2rem; + font-size: 1.1rem; + font-weight: 700; + color: var(--primary-foreground-color); + outline: var(--focus-outline-size) solid var(--primary-foreground-color); + + &:hover { + color: var(--secondary-foreground-color); + background-color: var(--primary-foreground-color); + } + } } } diff --git a/src/routes/Intro/useFacebookLogin.ts b/src/routes/Intro/useFacebookLogin.ts index a1097111b..c59f6e275 100644 --- a/src/routes/Intro/useFacebookLogin.ts +++ b/src/routes/Intro/useFacebookLogin.ts @@ -26,7 +26,7 @@ const useFacebookLogin = () => { const platform = usePlatform(); const timeout = useRef(null); - const startFacebookLogin = useCallback(() => { + const start = useCallback(() => { return new Promise((resolve, reject) => { const state = hat(128); let tries = 0; @@ -51,13 +51,18 @@ const useFacebookLogin = () => { }); }, []); - useEffect(() => { - return () => { - timeout.current && clearTimeout(timeout.current); - }; + const stop = useCallback(() => { + timeout.current && clearTimeout(timeout.current); }, []); - return startFacebookLogin; + useEffect(() => { + return () => stop(); + }, []); + + return [ + start, + stop, + ]; }; module.exports = useFacebookLogin;