diff options
| author | Jules Laplace <julescarbon@gmail.com> | 2020-11-16 18:53:23 +0100 |
|---|---|---|
| committer | Jules Laplace <julescarbon@gmail.com> | 2020-11-16 18:53:23 +0100 |
| commit | 119a5fc20a550dca617d2bdb83c059a9acc389e8 (patch) | |
| tree | c02dcf4e5ba54e51ba993167e30cbc49237265db /animism-align/frontend/app/views/viewer/forms/subscription.form.js | |
| parent | 5231ca00fb7c5f48aeae2a90671f3dbc03688814 (diff) | |
subscription actions
Diffstat (limited to 'animism-align/frontend/app/views/viewer/forms/subscription.form.js')
| -rw-r--r-- | animism-align/frontend/app/views/viewer/forms/subscription.form.js | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/animism-align/frontend/app/views/viewer/forms/subscription.form.js b/animism-align/frontend/app/views/viewer/forms/subscription.form.js index fcd9a38..9c84614 100644 --- a/animism-align/frontend/app/views/viewer/forms/subscription.form.js +++ b/animism-align/frontend/app/views/viewer/forms/subscription.form.js @@ -1,11 +1,18 @@ import React, { Component } from 'react' +import { connect } from 'react-redux' +import { bindActionCreators } from 'redux' import { Arrow } from '../nav/viewer.icons' +import { Loader } from 'app/common/loader.component' +import { ENV_PRODUCTION } from 'app/constants' + +import * as subscriptionActions from './subscription.actions' const initialState = { email: "", agreed: false, subscribed: false, + loading: false, } export default class SubscriptionForm extends Component { @@ -34,18 +41,32 @@ export default class SubscriptionForm extends Component { } handleSubmit(e) { e.preventDefault() - if (!this.state.agreed) { + if (!this.state.agreed || this.state.loading) { return } - this.setState({ subscribed: true }) + if (ENV_PRODUCTION) { + this.setState({ loading: true }) + subscriptionActions.subscribe(this.state.email) + .then(() => { + this.setState({ loading: false, subscribed: true }) + }) + } else { + this.setState({ loading: true }) + setTimeout(() => { + this.setState({ loading: false, subscribed: true }) + }, 1000) + } } handleReset(e) { this.setState({ ...initialState }) } render() { + let className = "subscription-form" + if (this.state.subscribed) className += " subscribed" + if (this.state.loading) className += " loading" return ( <form - className={this.state.subscribed ? "subscription-form subscribed" : "subscription-form"} + className={className} onSubmit={this.handleSubmit} > <div className="subscription-callout"> @@ -82,6 +103,9 @@ export default class SubscriptionForm extends Component { <a href="/privacy">privacy policy.</a> </span> </label> + <div className="subscription-loading"> + <Loader /> + </div> <div className="subscription-thanks"> Thanks! You will receive an email soon confirming your subscription. <br /> |
