import { TBityOrderCreateRequestedSwap, TChangeStepSwap, TDestinationAddressSwap, TStopLoadBityRatesSwap } from 'actions/swap'; import { SwapInput } from 'reducers/swap/types'; import classnames from 'classnames'; import SimpleButton from 'components/ui/SimpleButton'; import { donationAddressMap } from 'config/data'; import { isValidBTCAddress, isValidETHAddress } from 'libs/validators'; import React, { Component } from 'react'; import translate from 'translations'; import { combineAndUpper } from 'utils/formatters'; import './ReceivingAddress.scss'; export interface StateProps { origin: SwapInput; destinationId: string; isPostingOrder: boolean; destinationAddress: string; } export interface ActionProps { destinationAddressSwap: TDestinationAddressSwap; changeStepSwap: TChangeStepSwap; stopLoadBityRatesSwap: TStopLoadBityRatesSwap; bityOrderCreateRequestedSwap: TBityOrderCreateRequestedSwap; } export default class ReceivingAddress extends Component { public onChangeDestinationAddress = (event: React.SyntheticEvent) => { const value = (event.target as HTMLInputElement).value; this.props.destinationAddressSwap(value); }; public onClickPartTwoComplete = () => { const { origin, destinationId } = this.props; if (!origin) { return; } this.props.bityOrderCreateRequestedSwap( origin.amount, this.props.destinationAddress, combineAndUpper(origin.id, destinationId) ); }; public render() { const { destinationId, destinationAddress, isPostingOrder } = this.props; let validAddress; // TODO - find better pattern here once currencies move beyond BTC, ETH, REP if (destinationId === 'BTC') { validAddress = isValidBTCAddress(destinationAddress); } else { validAddress = isValidETHAddress(destinationAddress); } const inputClasses = classnames({ 'SwapAddress-address-input': true, 'form-control': true, 'is-valid': validAddress, 'is-invalid': !validAddress }); return (
); } }