import { colors } from '@0xproject/react-shared'; import * as React from 'react'; import RaisedButton from 'material-ui/RaisedButton'; import { backendClient } from 'ts/utils/backend_client'; export interface SubscribeFormProps {} export enum SubscribeFormStatus { None, Error, Success, Loading, } export interface SubscribeFormState { emailText: string; status: SubscribeFormStatus; } export class SubscribeForm extends React.Component { public state = { emailText: '', status: SubscribeFormStatus.None, }; public render(): React.ReactNode { return (
Subscribe to our newsletter for 0x relayer and dApp updates
); } private _handleEmailInputChange(event: React.ChangeEvent): void { this.setState({ emailText: event.target.value }); } private async _handleSubscribeClickAsync(): Promise { this._setStatus(SubscribeFormStatus.Loading); const success = await backendClient.subscribeToNewsletterAsync(this.state.emailText); const status = success ? SubscribeFormStatus.Success : SubscribeFormStatus.Error; this._setStatus(status); } private _setStatus(status: SubscribeFormStatus): void { this.setState({ status }); } }