import React from 'react' export interface CaptchaProps { audioUrl?: string imageUrl: string } export type CaptchaType = 'image' | 'audio' export interface CaptchaState { type: CaptchaType attempt: number } export class Captcha extends React.PureComponent { static defaultProps = { name: 'captcha', } state: CaptchaState = { type: 'image', attempt: 1, } changeType(type: CaptchaType) { this.setState({ type }) } changeToAudio = () => { this.changeType('audio') } changeToImage = () => { this.changeType('image') } refresh = () => { this.setState({ attempt: this.state.attempt + 1 }) } render() { const { imageUrl, audioUrl } = this.props const { attempt, type } = this.state return (
{type === 'image' && ( <> Refresh {this.props.audioUrl && ( Click here for image version )} )} {type === 'audio' && ( <>
) } }