import React, { Component } from 'react';
import { CopyToClipboard } from 'react-copy-to-clipboard';
import './index.less';
import Assets from '@src/components/Assets';
import { asyncSMessage } from '@src/services/AsyncTools';
import { Icon } from 'antd';
import Button from '../Button';
import { DefaultInput } from '../Input';
import { Main } from '../../stores/main';
import { My } from '../../stores/my';
import { PcUrl, H5Url } from '../../../Constant';

export default class Invite extends Component {
  constructor(props) {
    super(props);
    this.state = { data: this.props.data || {}, qr: Main.qrCode(`${H5Url}/id/${(this.props.data || {}).inviteCode}`) };
  }

  changeData(field, value) {
    let { data } = this.state;
    data = data || {};
    data[field] = value;
    this.setState({ data, error: null });
  }

  send() {
    const { data } = this.state;
    if (!data.emails) return;
    My.inviteEmail(data.emails.replace(/;/g, ';').split(';'))
      .then(() => {
        data.emails = '';
        this.setState({ success: true, data });
      });
  }

  render() {
    const { data } = this.props;
    const { success, qr } = this.state;
    return (
      <div className="invite-block">
        <div className="title-block">
          <b>方法一:</b> 将邀请链接发送给好友
      </div>
        <div className="input-layout">
          <div className="input-block">
            <div className="t1">http://</div>
            <div className="t2">{PcUrl.replace('http://', '')}/id/{data.inviteCode}</div>
          </div>
          <CopyToClipboard
            text={`${PcUrl}/id/${data.inviteCode}`}
            onCopy={() => asyncSMessage('已复制')}>
            <Button radius>复制</Button>
          </CopyToClipboard>
        </div>
        <div className="title-block">
          <b>方法二:</b> 微信扫码分享
      </div>
        <div className="qrcode">
          <Assets src={qr} />
        </div>
        <div className="title-block">
          <b>方法三:</b> 向好友发送邀请邮件
      </div>
        <div className="input-layout">
          <div className="input-block">
            <DefaultInput
              placeholder="输入多个邮箱,用';'隔开"
              value={this.state.data.emails || ''}
              error={this.state.error}
              onChange={e => {
                this.changeData('emails', e.target.value);
              }}
            />
            {success && <div className="success">
              <Icon type="check" />邀请已发送
          </div>}
          </div>
          <Button radius onClick={() => {
            this.send();
          }}>发送</Button>
        </div>
      </div>
    );
  }
}