From cda8335777a8137b7ad35eb621bb36409d4481a1 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Mon, 10 Feb 2020 13:58:09 +0200 Subject: [PATCH 01/15] forgotten password modal dialog implemented --- src/routes/Intro/Intro.js | 97 ++++++++++++++++++++++++++++++++---- src/routes/Intro/styles.less | 36 ++++++++++--- 2 files changed, 117 insertions(+), 16 deletions(-) diff --git a/src/routes/Intro/Intro.js b/src/routes/Intro/Intro.js index 223294e12..40d0f473c 100644 --- a/src/routes/Intro/Intro.js +++ b/src/routes/Intro/Intro.js @@ -3,7 +3,7 @@ const PropTypes = require('prop-types'); const classnames = require('classnames'); const Icon = require('stremio-icons/dom'); const { useRouteFocused } = require('stremio-router'); -const { Button, useCoreEvent } = require('stremio/common'); +const { Button, ModalDialog, TextInput, useBinaryState, useCoreEvent } = require('stremio/common'); const { useServices } = require('stremio/services'); const CredentialsTextInput = require('./CredentialsTextInput'); const ConsentCheckbox = require('./ConsentCheckbox'); @@ -22,6 +22,7 @@ const Intro = ({ queryParams }) => { const privacyPolicyRef = React.useRef(); const marketingRef = React.useRef(); const errorRef = React.useRef(); + const [passwordRestModalOpen, openPasswordRestModal, closePasswordResetModal] = useBinaryState(false); const [state, dispatch] = React.useReducer( (state, action) => { switch (action.type) { @@ -89,7 +90,7 @@ const Intro = ({ queryParams }) => { const loginWithFacebook = React.useCallback(() => { FB.login((response) => { if (response.status === 'connected') { - fetch('https://www.strem.io/fb-login-with-token/' + encodeURIComponent(response.authResponse.accessToken), { timeout: 10 * 1000 }) + fetch('https://www.strem.io/fb-login-with-token/' + encodeURIComponent(response.authResponse.accessToken), { timeout: 10 * 60 * 1000 }) .then((resp) => { if (resp.status < 200 || resp.status >= 300) { throw new Error('Login failed at getting token from Stremio with status ' + resp.status); @@ -97,22 +98,30 @@ const Intro = ({ queryParams }) => { return resp.json(); } }) - .then(() => { + .then(({ user }) => { + if (!user || typeof user.fbLoginToken !== 'string' || typeof user.email !== 'string') { + throw new Error('Login failed at getting token from Stremio'); + } core.dispatch({ - action: 'UserOp', + action: 'Ctx', args: { - userOp: 'Login', + action: 'Authenticate', args: { - email: state.email, - password: response.authResponse.accessToken + type: 'Login', + email: user.email, + password: user.fbLoginToken } } }); }) - .catch(() => { }); + .catch((err = {}) => { + dispatch({ type: 'error', error: err.message || JSON.stringify(err) }); + }); + } else { + dispatch({ type: 'error', error: 'Login failed at getting token from Facebook' }); } }); - }, [state.email, state.password]); + }, []); const loginWithEmail = React.useCallback(() => { if (typeof state.email !== 'string' || state.email.length === 0) { dispatch({ type: 'error', error: 'Invalid email' }); @@ -315,7 +324,7 @@ const Intro = ({ queryParams }) => { :
- +
} { @@ -339,10 +348,78 @@ const Intro = ({ queryParams }) => {
{state.form === SIGNUP_FORM ? 'LOG IN' : 'SING UP WITH EMAIL'}
+ { + passwordRestModalOpen ? + + : + null + } ); }; +const PasswordResetModal = (props) => { + const routeFocused = useRouteFocused(); + const [error, setError] = React.useState(''); + const [email, setEmail] = React.useState(typeof props.email === 'string' ? props.email : ''); + const modalEmailRef = React.useRef(); + const passwordResetClicked = React.useCallback(() => { + email.length > 0 && modalEmailRef.current.validity.valid ? + window.open('https://www.strem.io/reset-password/' + email, '_blank') + : + setError('Invalid email'); + }, [email]); + const passwordResetModalButtons = React.useMemo(() => { + return [ + { + className: styles['cancel-button'], + label: 'Cancel', + props: { + onClick: props.onCloseRequest + } + }, + { + label: 'Send', + props: { + onClick: passwordResetClicked + } + } + ]; + }, [passwordResetClicked]); + const emailOnChange = React.useCallback((event) => { + setError(''); + setEmail(event.currentTarget.value); + }, [email]); + const emailOnSubmit = React.useCallback(() => { + passwordResetClicked(); + }, [passwordResetClicked]); + React.useEffect(() => { + if (routeFocused) { + modalEmailRef.current.focus(); + } + }, [routeFocused]); + return ( + +
Enter your email
+ + { + error.length > 0 ? +
{error}
+ : + null + } +
+ ); +}; + Intro.propTypes = { queryParams: PropTypes.instanceOf(URLSearchParams) }; diff --git a/src/routes/Intro/styles.less b/src/routes/Intro/styles.less index 872512687..857f0a4eb 100644 --- a/src/routes/Intro/styles.less +++ b/src/routes/Intro/styles.less @@ -110,12 +110,6 @@ margin: 1rem 0; } - .error-message { - margin: 1rem 0; - text-align: center; - color: var(--color-signal1); - } - .submit-button { min-height: 4rem; margin: 1rem 0; @@ -149,4 +143,34 @@ } } } +} + +.error-message { + margin: 1rem 0; + text-align: center; + color: var(--color-signal1); +} + +.password-reset-modal-container { + .message { + margin-bottom: 1rem; + } + + .text-input { + width: 20rem; + padding: 0.5rem; + background-color: var(--color-surface40); + + &:hover, &:focus { + background-color: var(--color-surface60); + } + } + + .error-message { + color: var(--color-signal2); + } + + .cancel-button { + background-color: var(--color-surfacedark); + } } \ No newline at end of file From 52c2e312645379181b78a50ccd635fa179bbf916 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Mon, 10 Feb 2020 17:07:05 +0200 Subject: [PATCH 02/15] PasswordRestModal moved to separate folder --- src/routes/Intro/Intro.js | 65 +--------------- .../PasswordResetModal/PasswordResetModal.js | 74 +++++++++++++++++++ src/routes/Intro/PasswordResetModal/index.js | 3 + .../Intro/PasswordResetModal/styles.less | 25 +++++++ src/routes/Intro/styles.less | 36 ++------- 5 files changed, 110 insertions(+), 93 deletions(-) create mode 100644 src/routes/Intro/PasswordResetModal/PasswordResetModal.js create mode 100644 src/routes/Intro/PasswordResetModal/index.js create mode 100644 src/routes/Intro/PasswordResetModal/styles.less diff --git a/src/routes/Intro/Intro.js b/src/routes/Intro/Intro.js index 40d0f473c..2e54d5621 100644 --- a/src/routes/Intro/Intro.js +++ b/src/routes/Intro/Intro.js @@ -3,10 +3,11 @@ const PropTypes = require('prop-types'); const classnames = require('classnames'); const Icon = require('stremio-icons/dom'); const { useRouteFocused } = require('stremio-router'); -const { Button, ModalDialog, TextInput, useBinaryState, useCoreEvent } = require('stremio/common'); +const { Button, useBinaryState, useCoreEvent } = require('stremio/common'); const { useServices } = require('stremio/services'); const CredentialsTextInput = require('./CredentialsTextInput'); const ConsentCheckbox = require('./ConsentCheckbox'); +const PasswordResetModal = require('./PasswordResetModal'); const styles = require('./styles'); const SIGNUP_FORM = 'signup'; @@ -358,68 +359,6 @@ const Intro = ({ queryParams }) => { ); }; -const PasswordResetModal = (props) => { - const routeFocused = useRouteFocused(); - const [error, setError] = React.useState(''); - const [email, setEmail] = React.useState(typeof props.email === 'string' ? props.email : ''); - const modalEmailRef = React.useRef(); - const passwordResetClicked = React.useCallback(() => { - email.length > 0 && modalEmailRef.current.validity.valid ? - window.open('https://www.strem.io/reset-password/' + email, '_blank') - : - setError('Invalid email'); - }, [email]); - const passwordResetModalButtons = React.useMemo(() => { - return [ - { - className: styles['cancel-button'], - label: 'Cancel', - props: { - onClick: props.onCloseRequest - } - }, - { - label: 'Send', - props: { - onClick: passwordResetClicked - } - } - ]; - }, [passwordResetClicked]); - const emailOnChange = React.useCallback((event) => { - setError(''); - setEmail(event.currentTarget.value); - }, [email]); - const emailOnSubmit = React.useCallback(() => { - passwordResetClicked(); - }, [passwordResetClicked]); - React.useEffect(() => { - if (routeFocused) { - modalEmailRef.current.focus(); - } - }, [routeFocused]); - return ( - -
Enter your email
- - { - error.length > 0 ? -
{error}
- : - null - } -
- ); -}; - Intro.propTypes = { queryParams: PropTypes.instanceOf(URLSearchParams) }; diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js new file mode 100644 index 000000000..177fb5ee1 --- /dev/null +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -0,0 +1,74 @@ +const React = require('react'); +const PropTypes = require('prop-types'); +const { useRouteFocused } = require('stremio-router'); +const { ModalDialog, TextInput } = require('stremio/common'); +const styles = require('./styles'); + +const PasswordResetModal = ({ email, onCloseRequest }) => { + const routeFocused = useRouteFocused(); + const [error, setError] = React.useState(''); + const [modalEmail, setModalEmail] = React.useState(typeof email === 'string' ? email : ''); + const modalEmailRef = React.useRef(); + const passwordResetClicked = React.useCallback(() => { + modalEmail.length > 0 && modalEmailRef.current.validity.valid ? + window.open('https://www.strem.io/reset-password/' + modalEmail, '_blank') + : + setError('Invalid email'); + }, [modalEmail]); + const passwordResetModalButtons = React.useMemo(() => { + return [ + { + className: styles['cancel-button'], + label: 'Cancel', + props: { + onClick: onCloseRequest + } + }, + { + label: 'Send', + props: { + onClick: passwordResetClicked + } + } + ]; + }, [passwordResetClicked]); + const emailOnChange = React.useCallback((event) => { + setError(''); + setModalEmail(event.currentTarget.value); + }, [modalEmail]); + const emailOnSubmit = React.useCallback(() => { + passwordResetClicked(); + }, [passwordResetClicked]); + React.useEffect(() => { + if (routeFocused) { + modalEmailRef.current.focus(); + } + }, [routeFocused]); + return ( + +
Enter your email
+ + { + error.length > 0 ? +
{error}
+ : + null + } +
+ ); +}; + +PasswordResetModal.propTypes = { + email: PropTypes.string, + onCloseRequest: PropTypes.func +}; + +module.exports = PasswordResetModal; diff --git a/src/routes/Intro/PasswordResetModal/index.js b/src/routes/Intro/PasswordResetModal/index.js new file mode 100644 index 000000000..128292036 --- /dev/null +++ b/src/routes/Intro/PasswordResetModal/index.js @@ -0,0 +1,3 @@ +const PasswordResetModal = require('./PasswordResetModal'); + +module.exports = PasswordResetModal; diff --git a/src/routes/Intro/PasswordResetModal/styles.less b/src/routes/Intro/PasswordResetModal/styles.less new file mode 100644 index 000000000..219a82b3f --- /dev/null +++ b/src/routes/Intro/PasswordResetModal/styles.less @@ -0,0 +1,25 @@ +.password-reset-modal-container { + .message { + margin-bottom: 1rem; + } + + .text-input { + width: 20rem; + padding: 0.5rem; + background-color: var(--color-surface40); + + &:hover, &:focus { + background-color: var(--color-surface60); + } + } + + .error-message { + margin: 1rem 0; + text-align: center; + color: var(--color-signal2); + } + + .cancel-button { + background-color: var(--color-surfacedark); + } +} \ No newline at end of file diff --git a/src/routes/Intro/styles.less b/src/routes/Intro/styles.less index 857f0a4eb..872512687 100644 --- a/src/routes/Intro/styles.less +++ b/src/routes/Intro/styles.less @@ -110,6 +110,12 @@ margin: 1rem 0; } + .error-message { + margin: 1rem 0; + text-align: center; + color: var(--color-signal1); + } + .submit-button { min-height: 4rem; margin: 1rem 0; @@ -143,34 +149,4 @@ } } } -} - -.error-message { - margin: 1rem 0; - text-align: center; - color: var(--color-signal1); -} - -.password-reset-modal-container { - .message { - margin-bottom: 1rem; - } - - .text-input { - width: 20rem; - padding: 0.5rem; - background-color: var(--color-surface40); - - &:hover, &:focus { - background-color: var(--color-surface60); - } - } - - .error-message { - color: var(--color-signal2); - } - - .cancel-button { - background-color: var(--color-surfacedark); - } } \ No newline at end of file From 0284ec301dd70ece8c9e45edfab53ba385497516 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Mon, 10 Feb 2020 17:10:03 +0200 Subject: [PATCH 03/15] unnecessary dependency removed --- src/routes/Intro/PasswordResetModal/PasswordResetModal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index 177fb5ee1..e5275f3a1 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -35,7 +35,7 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { const emailOnChange = React.useCallback((event) => { setError(''); setModalEmail(event.currentTarget.value); - }, [modalEmail]); + }, []); const emailOnSubmit = React.useCallback(() => { passwordResetClicked(); }, [passwordResetClicked]); From 515f362cc119512a4581c88acd61b45b9c096260 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Mon, 10 Feb 2020 17:13:01 +0200 Subject: [PATCH 04/15] onCloseRequest dependency added --- src/routes/Intro/PasswordResetModal/PasswordResetModal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index e5275f3a1..db85f286f 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -31,7 +31,7 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { } } ]; - }, [passwordResetClicked]); + }, [onCloseRequest, passwordResetClicked]); const emailOnChange = React.useCallback((event) => { setError(''); setModalEmail(event.currentTarget.value); From 2800eb088f13f0af4964a7dcbb93ba8e59333384 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Mon, 10 Feb 2020 17:15:53 +0200 Subject: [PATCH 05/15] passwordResetClicked renamed to passwordRestOnClick --- .../Intro/PasswordResetModal/PasswordResetModal.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index db85f286f..7a6f7f938 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -9,7 +9,7 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { const [error, setError] = React.useState(''); const [modalEmail, setModalEmail] = React.useState(typeof email === 'string' ? email : ''); const modalEmailRef = React.useRef(); - const passwordResetClicked = React.useCallback(() => { + const passwordResetOnClick = React.useCallback(() => { modalEmail.length > 0 && modalEmailRef.current.validity.valid ? window.open('https://www.strem.io/reset-password/' + modalEmail, '_blank') : @@ -27,18 +27,18 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { { label: 'Send', props: { - onClick: passwordResetClicked + onClick: passwordResetOnClick } } ]; - }, [onCloseRequest, passwordResetClicked]); + }, [onCloseRequest, passwordResetOnClick]); const emailOnChange = React.useCallback((event) => { setError(''); setModalEmail(event.currentTarget.value); }, []); const emailOnSubmit = React.useCallback(() => { - passwordResetClicked(); - }, [passwordResetClicked]); + passwordResetOnClick(); + }, [passwordResetOnClick]); React.useEffect(() => { if (routeFocused) { modalEmailRef.current.focus(); From 2d609fd8bdf7efddc05509c345f2accbaee52ba7 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Mon, 10 Feb 2020 17:31:14 +0200 Subject: [PATCH 06/15] modalEmailRef initial state added --- src/routes/Intro/PasswordResetModal/PasswordResetModal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index 7a6f7f938..5c9b08dce 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -8,7 +8,7 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { const routeFocused = useRouteFocused(); const [error, setError] = React.useState(''); const [modalEmail, setModalEmail] = React.useState(typeof email === 'string' ? email : ''); - const modalEmailRef = React.useRef(); + const modalEmailRef = React.useRef(null); const passwordResetOnClick = React.useCallback(() => { modalEmail.length > 0 && modalEmailRef.current.validity.valid ? window.open('https://www.strem.io/reset-password/' + modalEmail, '_blank') From 7ab2dab78a378331a63380638b5ffdd73955d455 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Tue, 11 Feb 2020 11:35:18 +0200 Subject: [PATCH 07/15] CredentialsTextInput with defaultValue used instead of TextInput --- .../PasswordResetModal/PasswordResetModal.js | 17 ++++++++--------- src/routes/Intro/PasswordResetModal/styles.less | 2 +- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index 5c9b08dce..15d795a11 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -1,20 +1,20 @@ const React = require('react'); const PropTypes = require('prop-types'); const { useRouteFocused } = require('stremio-router'); -const { ModalDialog, TextInput } = require('stremio/common'); +const { ModalDialog } = require('stremio/common'); +const CredentialsTextInput = require('stremio/routes/Intro/CredentialsTextInput'); const styles = require('./styles'); const PasswordResetModal = ({ email, onCloseRequest }) => { const routeFocused = useRouteFocused(); const [error, setError] = React.useState(''); - const [modalEmail, setModalEmail] = React.useState(typeof email === 'string' ? email : ''); const modalEmailRef = React.useRef(null); const passwordResetOnClick = React.useCallback(() => { - modalEmail.length > 0 && modalEmailRef.current.validity.valid ? - window.open('https://www.strem.io/reset-password/' + modalEmail, '_blank') + modalEmailRef.current.value.length > 0 && modalEmailRef.current.validity.valid ? + window.open('https://www.strem.io/reset-password/' + modalEmailRef.current.value, '_blank') : setError('Invalid email'); - }, [modalEmail]); + }, [modalEmailRef.current]); const passwordResetModalButtons = React.useMemo(() => { return [ { @@ -34,7 +34,6 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { }, [onCloseRequest, passwordResetOnClick]); const emailOnChange = React.useCallback((event) => { setError(''); - setModalEmail(event.currentTarget.value); }, []); const emailOnSubmit = React.useCallback(() => { passwordResetOnClick(); @@ -47,12 +46,12 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { return (
Enter your email
- diff --git a/src/routes/Intro/PasswordResetModal/styles.less b/src/routes/Intro/PasswordResetModal/styles.less index 219a82b3f..c61452534 100644 --- a/src/routes/Intro/PasswordResetModal/styles.less +++ b/src/routes/Intro/PasswordResetModal/styles.less @@ -3,7 +3,7 @@ margin-bottom: 1rem; } - .text-input { + .credentials-text-input { width: 20rem; padding: 0.5rem; background-color: var(--color-surface40); From 553340f329d91f79cb26a0ed9ab1a3b6b1c198c3 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Tue, 11 Feb 2020 12:33:27 +0200 Subject: [PATCH 08/15] unnecessary arg removed --- src/routes/Intro/PasswordResetModal/PasswordResetModal.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index 15d795a11..b8dd6f861 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -14,7 +14,7 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { window.open('https://www.strem.io/reset-password/' + modalEmailRef.current.value, '_blank') : setError('Invalid email'); - }, [modalEmailRef.current]); + }, [modalEmailRef.current]); const passwordResetModalButtons = React.useMemo(() => { return [ { @@ -32,7 +32,7 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { } ]; }, [onCloseRequest, passwordResetOnClick]); - const emailOnChange = React.useCallback((event) => { + const emailOnChange = React.useCallback(() => { setError(''); }, []); const emailOnSubmit = React.useCallback(() => { From 84a1785a0e8d7d73f3eaf86037ef73b37acfc3dc Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Tue, 11 Feb 2020 13:59:54 +0200 Subject: [PATCH 09/15] not needed target _blank removed --- src/routes/Intro/Intro.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/Intro/Intro.js b/src/routes/Intro/Intro.js index 2e54d5621..97e19ef3a 100644 --- a/src/routes/Intro/Intro.js +++ b/src/routes/Intro/Intro.js @@ -325,7 +325,7 @@ const Intro = ({ queryParams }) => { :
- +
} { From c0b149e9ab34144461fd2ee8d996c8e91101f212 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Tue, 11 Feb 2020 14:03:02 +0200 Subject: [PATCH 10/15] ../ usage for CredentialsTextInput --- src/routes/Intro/PasswordResetModal/PasswordResetModal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index b8dd6f861..35b71ecce 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -2,7 +2,7 @@ const React = require('react'); const PropTypes = require('prop-types'); const { useRouteFocused } = require('stremio-router'); const { ModalDialog } = require('stremio/common'); -const CredentialsTextInput = require('stremio/routes/Intro/CredentialsTextInput'); +const CredentialsTextInput = require('../CredentialsTextInput'); const styles = require('./styles'); const PasswordResetModal = ({ email, onCloseRequest }) => { From eea05e46cb9e3801561f2c73a4f72e2609468265 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Tue, 11 Feb 2020 14:03:48 +0200 Subject: [PATCH 11/15] passwordResetOnClick dependency removed --- src/routes/Intro/PasswordResetModal/PasswordResetModal.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index 35b71ecce..f12c63676 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -14,7 +14,7 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { window.open('https://www.strem.io/reset-password/' + modalEmailRef.current.value, '_blank') : setError('Invalid email'); - }, [modalEmailRef.current]); + }, []); const passwordResetModalButtons = React.useMemo(() => { return [ { From 8f64cb61e9dd4fe780633110078583afd466da4c Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Tue, 11 Feb 2020 14:24:18 +0200 Subject: [PATCH 12/15] goToPasswordReset func added --- .../Intro/PasswordResetModal/PasswordResetModal.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index f12c63676..22a50448c 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -9,12 +9,15 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { const routeFocused = useRouteFocused(); const [error, setError] = React.useState(''); const modalEmailRef = React.useRef(null); - const passwordResetOnClick = React.useCallback(() => { + const goToPasswordReset = React.useCallback(() => { modalEmailRef.current.value.length > 0 && modalEmailRef.current.validity.valid ? window.open('https://www.strem.io/reset-password/' + modalEmailRef.current.value, '_blank') : setError('Invalid email'); }, []); + const passwordResetOnClick = React.useCallback(() => { + goToPasswordReset(); + }, [goToPasswordReset]); const passwordResetModalButtons = React.useMemo(() => { return [ { @@ -36,8 +39,8 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { setError(''); }, []); const emailOnSubmit = React.useCallback(() => { - passwordResetOnClick(); - }, [passwordResetOnClick]); + goToPasswordReset(); + }, [goToPasswordReset]); React.useEffect(() => { if (routeFocused) { modalEmailRef.current.focus(); From 7f73dab543a0e5c91fac8d1ac34239f530038a59 Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Tue, 11 Feb 2020 14:44:59 +0200 Subject: [PATCH 13/15] modalEmailRef renamed to emailRef --- .../Intro/PasswordResetModal/PasswordResetModal.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index 22a50448c..6884cc6ec 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -8,10 +8,10 @@ const styles = require('./styles'); const PasswordResetModal = ({ email, onCloseRequest }) => { const routeFocused = useRouteFocused(); const [error, setError] = React.useState(''); - const modalEmailRef = React.useRef(null); + const еmailRef = React.useRef(null); const goToPasswordReset = React.useCallback(() => { - modalEmailRef.current.value.length > 0 && modalEmailRef.current.validity.valid ? - window.open('https://www.strem.io/reset-password/' + modalEmailRef.current.value, '_blank') + еmailRef.current.value.length > 0 && еmailRef.current.validity.valid ? + window.open('https://www.strem.io/reset-password/' + еmailRef.current.value, '_blank') : setError('Invalid email'); }, []); @@ -43,14 +43,14 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { }, [goToPasswordReset]); React.useEffect(() => { if (routeFocused) { - modalEmailRef.current.focus(); + еmailRef.current.focus(); } }, [routeFocused]); return (
Enter your email
Date: Tue, 11 Feb 2020 14:58:25 +0200 Subject: [PATCH 14/15] goToPasswordReset removed from deps --- src/routes/Intro/PasswordResetModal/PasswordResetModal.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index 6884cc6ec..6782eac46 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -17,7 +17,7 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { }, []); const passwordResetOnClick = React.useCallback(() => { goToPasswordReset(); - }, [goToPasswordReset]); + }, []); const passwordResetModalButtons = React.useMemo(() => { return [ { @@ -40,7 +40,7 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { }, []); const emailOnSubmit = React.useCallback(() => { goToPasswordReset(); - }, [goToPasswordReset]); + }, []); React.useEffect(() => { if (routeFocused) { еmailRef.current.focus(); From a3abce44c98c0ba910c49a2006594cbd4ba6493f Mon Sep 17 00:00:00 2001 From: svetlagasheva Date: Wed, 12 Feb 2020 12:44:26 +0200 Subject: [PATCH 15/15] message removed; text-input styles changed --- .../Intro/PasswordResetModal/PasswordResetModal.js | 1 - src/routes/Intro/PasswordResetModal/styles.less | 10 +--------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js index 6782eac46..7877492bb 100644 --- a/src/routes/Intro/PasswordResetModal/PasswordResetModal.js +++ b/src/routes/Intro/PasswordResetModal/PasswordResetModal.js @@ -48,7 +48,6 @@ const PasswordResetModal = ({ email, onCloseRequest }) => { }, [routeFocused]); return ( -
Enter your email