fix(client): sign up for email list directly (#45508)

* fix(client): sign up for email list directly

* fix: remove extraneous code
This commit is contained in:
Mrugesh Mohapatra
2022-03-28 19:51:58 +05:30
committed by GitHub
parent 3375a94677
commit b2a96e0a09
10 changed files with 73 additions and 43 deletions

View File

@ -26,6 +26,7 @@
"off": "關閉", "off": "關閉",
"on": "打開", "on": "打開",
"sign-in": "登錄", "sign-in": "登錄",
"sign-up-email-list": "Sign up for Quincy's weekly emails",
"sign-out": "退出", "sign-out": "退出",
"curriculum": "課程", "curriculum": "課程",
"forum": "論壇", "forum": "論壇",

View File

@ -26,6 +26,7 @@
"off": "关闭", "off": "关闭",
"on": "打开", "on": "打开",
"sign-in": "登录", "sign-in": "登录",
"sign-up-email-list": "Sign up for Quincy's weekly emails",
"sign-out": "退出", "sign-out": "退出",
"curriculum": "课程", "curriculum": "课程",
"forum": "论坛", "forum": "论坛",

View File

@ -26,6 +26,7 @@
"off": "Off", "off": "Off",
"on": "On", "on": "On",
"sign-in": "Sign in", "sign-in": "Sign in",
"sign-up-email-list": "Sign up for Quincy's weekly emails",
"sign-out": "Sign out", "sign-out": "Sign out",
"curriculum": "Curriculum", "curriculum": "Curriculum",
"forum": "Forum", "forum": "Forum",

View File

@ -26,6 +26,7 @@
"off": "Apagado", "off": "Apagado",
"on": "Encendido", "on": "Encendido",
"sign-in": "Iniciar sesión", "sign-in": "Iniciar sesión",
"sign-up-email-list": "Sign up for Quincy's weekly emails",
"sign-out": "Cerrar sesión", "sign-out": "Cerrar sesión",
"curriculum": "Currículo", "curriculum": "Currículo",
"forum": "Foro", "forum": "Foro",

View File

@ -26,6 +26,7 @@
"off": "Off", "off": "Off",
"on": "On", "on": "On",
"sign-in": "Accedi", "sign-in": "Accedi",
"sign-up-email-list": "Sign up for Quincy's weekly emails",
"sign-out": "Esci", "sign-out": "Esci",
"curriculum": "Curriculum", "curriculum": "Curriculum",
"forum": "Forum", "forum": "Forum",

View File

@ -26,6 +26,7 @@
"off": "オフ", "off": "オフ",
"on": "オン", "on": "オン",
"sign-in": "サインイン", "sign-in": "サインイン",
"sign-up-email-list": "Sign up for Quincy's weekly emails",
"sign-out": "サインアウト", "sign-out": "サインアウト",
"curriculum": "カリキュラム", "curriculum": "カリキュラム",
"forum": "フォーラム", "forum": "フォーラム",

View File

@ -26,6 +26,7 @@
"off": "Desligado", "off": "Desligado",
"on": "Ligado", "on": "Ligado",
"sign-in": "Iniciar sessão", "sign-in": "Iniciar sessão",
"sign-up-email-list": "Sign up for Quincy's weekly emails",
"sign-out": "Encerrar sessão", "sign-out": "Encerrar sessão",
"curriculum": "Currículo", "curriculum": "Currículo",
"forum": "Fórum", "forum": "Fórum",

View File

@ -26,6 +26,7 @@
"off": "Вимкнути", "off": "Вимкнути",
"on": "Увімкнути", "on": "Увімкнути",
"sign-in": "Увійти", "sign-in": "Увійти",
"sign-up-email-list": "Sign up for Quincy's weekly emails",
"sign-out": "Вийти", "sign-out": "Вийти",
"curriculum": "Навчальна програма", "curriculum": "Навчальна програма",
"forum": "Форум", "forum": "Форум",

View File

@ -119,16 +119,8 @@ exports[`<EmailSignUp /> Non-Authenticated user "not accepted terms and conditio
/> />
</div> </div>
<div <div
className="col-md-4 col-md-offset-2 col-sm-5 col-sm-offset-1 col-xs-12" className="col-md-8 col-md-offset-2 col-sm-10 col-sm-offset-1 col-xs-12"
> >
<button
className="big-cta-btn btn btn-lg btn-primary btn-block"
disabled={false}
onClick={[Function]}
type="button"
>
buttons.yes-please
</button>
<div <div
className="button-spacer" className="button-spacer"
style={ style={
@ -137,18 +129,14 @@ exports[`<EmailSignUp /> Non-Authenticated user "not accepted terms and conditio
} }
} }
/> />
</div> <a
<div
className="col-md-4 col-sm-5 col-xs-12"
>
<button
className="big-cta-btn btn btn-lg btn-primary btn-block" className="big-cta-btn btn btn-lg btn-primary btn-block"
disabled={false} href="http://localhost:3000/signin"
onClick={[Function]} onClick={[Function]}
type="button" onKeyDown={[Function]}
> >
buttons.no-thanks buttons.sign-up-email-list
</button> </a>
<div <div
className="button-spacer" className="button-spacer"
style={ style={

View File

@ -9,21 +9,27 @@ import { createSelector } from 'reselect';
import IntroDescription from '../components/Intro/components/IntroDescription'; import IntroDescription from '../components/Intro/components/IntroDescription';
import createRedirect from '../components/create-redirect'; import createRedirect from '../components/create-redirect';
import { ButtonSpacer, Spacer } from '../components/helpers'; import { ButtonSpacer, Spacer } from '../components/helpers';
import { apiLocation } from '../../../config/env.json';
import { acceptTerms, userSelector } from '../redux'; import { acceptTerms, userSelector, isSignedInSelector } from '../redux';
import './email-sign-up.css'; import './email-sign-up.css';
interface AcceptPrivacyTermsProps { interface AcceptPrivacyTermsProps {
acceptTerms: (accept: boolean | null) => void; acceptTerms: (accept: boolean | null) => void;
acceptedPrivacyTerms: boolean; acceptedPrivacyTerms: boolean;
isSignedIn: boolean;
t: TFunction; t: TFunction;
} }
const mapStateToProps = createSelector( const mapStateToProps = createSelector(
userSelector, userSelector,
({ acceptedPrivacyTerms }: { acceptedPrivacyTerms: boolean }) => ({ isSignedInSelector,
acceptedPrivacyTerms (
{ acceptedPrivacyTerms }: { acceptedPrivacyTerms: boolean },
isSignedIn: boolean
) => ({
acceptedPrivacyTerms,
isSignedIn
}) })
); );
const mapDispatchToProps = (dispatch: Dispatch) => const mapDispatchToProps = (dispatch: Dispatch) =>
@ -33,10 +39,12 @@ const RedirectToLearn = createRedirect('/learn');
function AcceptPrivacyTerms({ function AcceptPrivacyTerms({
acceptTerms, acceptTerms,
acceptedPrivacyTerms, acceptedPrivacyTerms,
isSignedIn,
t t
}: AcceptPrivacyTermsProps) { }: AcceptPrivacyTermsProps) {
const acceptedPrivacyRef = useRef(acceptedPrivacyTerms); const acceptedPrivacyRef = useRef(acceptedPrivacyTerms);
const acceptTermsRef = useRef(acceptTerms); const acceptTermsRef = useRef(acceptTerms);
useEffect(() => { useEffect(() => {
acceptedPrivacyRef.current = acceptedPrivacyTerms; acceptedPrivacyRef.current = acceptedPrivacyTerms;
acceptTermsRef.current = acceptTerms; acceptTermsRef.current = acceptTerms;
@ -59,28 +67,10 @@ function AcceptPrivacyTerms({
acceptTerms(isWeeklyEmailAccepted); acceptTerms(isWeeklyEmailAccepted);
} }
return acceptedPrivacyTerms ? ( function renderEmailListOptin(isSignedIn: boolean) {
<RedirectToLearn /> if (isSignedIn) {
) : ( return (
<>
<Helmet>
<title>{t('misc.email-signup')} | freeCodeCamp.org</title>
</Helmet>
<Grid>
<Row> <Row>
<Col md={8} mdOffset={2} sm={10} smOffset={1} xs={12}>
<Spacer />
<IntroDescription />
<hr />
</Col>
</Row>
<Row className='email-sign-up' data-cy='email-sign-up'>
<Col md={8} mdOffset={2} sm={10} smOffset={1} xs={12}>
<strong>{t('misc.quincy')}</strong>
<Spacer />
<p>{t('misc.email-blast')}</p>
<Spacer />
</Col>
<Col md={4} mdOffset={2} sm={5} smOffset={1} xs={12}> <Col md={4} mdOffset={2} sm={5} smOffset={1} xs={12}>
<Button <Button
block={true} block={true}
@ -105,6 +95,50 @@ function AcceptPrivacyTerms({
</Button> </Button>
<ButtonSpacer /> <ButtonSpacer />
</Col> </Col>
</Row>
);
} else {
return (
<Col md={8} mdOffset={2} sm={10} smOffset={1} xs={12}>
<ButtonSpacer />
<Button
block={true}
bsSize='lg'
bsStyle='primary'
className='big-cta-btn'
href={`${apiLocation}/signin`}
>
{t('buttons.sign-up-email-list')}
</Button>
<ButtonSpacer />
</Col>
);
}
}
return acceptedPrivacyTerms ? (
<RedirectToLearn />
) : (
<>
<Helmet>
<title>{t('misc.email-signup')} | freeCodeCamp.org</title>
</Helmet>
<Grid>
<Row>
<Col md={8} mdOffset={2} sm={10} smOffset={1} xs={12}>
<Spacer />
<IntroDescription />
<hr />
</Col>
</Row>
<Row className='email-sign-up' data-cy='email-sign-up'>
<Col md={8} mdOffset={2} sm={10} smOffset={1} xs={12}>
<strong>{t('misc.quincy')}</strong>
<Spacer />
<p>{t('misc.email-blast')}</p>
<Spacer />
</Col>
{renderEmailListOptin(isSignedIn)}
<Col xs={12}> <Col xs={12}>
<Spacer /> <Spacer />
</Col> </Col>