import React, { PureComponent } from 'react'
import { Flex, WhiteSpace, List } from 'antd-mobile'
import './index.scss'
import Avatar from './image/avatar.png'
import Vip from './image/vip.png'
import { WithTab } from 'src/HOCs'
import { Link } from "react-router-dom"
import { connect } from "react-redux"
import { HeaderBar } from "src/common"
import { http } from "src/utils"
import { setCurrentUser, startFetchUser } from "src/store/userAction"
import {endFetchNoTrace} from 'src/store/no-trace-validation/reducer'


const Item = List.Item;
const Brief = Item.Brief;

@connect(state => ({
  user: state.user,
}), {startFetchUser, setCurrentUser, endFetchNoTrace})
class My extends PureComponent {
  constructor(props) {
    super(props)
    this.state = {
      data: [],
    }
  }


  componentDidMount() {
    this.getUser()
  }

  getUser = () => {
    this.props.startFetchUser()
    http.get(`${API.home}/m/user_info_sample/1`).then(res => {
      this.props.endFetchNoTrace()
      this.props.setCurrentUser(this.transformUser(res))
    })
  }

  transformUser = res => {
    let payload
    if (res.data.code === 200) {
      const {
        msg, data: {
          avatar_file: avatar,
          user_name: username,
          is_vip: isVIP,
          uid,
          code,
        },
      } = res.data

      payload = {
        hasError: false,
        msg,
        data: {
          username,
          isVIP,
          avatar,
          uid,
          code,
        },
      }
    } else {
      payload = {
        hasError: true,
        msg: res.data.msg,
        code: res.data.code,
        data: {},
      }
    }
    return payload
  }

  // 去登录
  toLogin = () => {
    this.props.history.push('/passport')
  }

  toCourseDetail = (id) => {
    const {dispatch, history} = this.props;
    // dispatch(getCourses(id, () => {
    history.push(`/detail?id=${id}`);
    return false;
    // }));
  }

  render() {
    const {user} = this.props
    const uid = user && user.data && user.data.uid
    const username = user && user.data && user.data.username
    const avatar = user && user.data && user.data.avatar
    const isVIP = user && user.data && user.data.isVIP

    let list
    if (!uid) {
      list = <List className="my-list">
        <Item
          className="avatar-wrap"
          arrow="horizontal"
          multipleLine
          thumb={Avatar}
          onClick={this.toLogin}>
          <Brief>点击登录</Brief>
        </Item>
      </List>
    } else {
      list = <List className="my-list">
        <Link to='/myedit'>
          <Item
            className="avatar-wrap"
            arrow="horizontal"
            multipleLine
            thumb={avatar}
          >
            <Brief>
              {username}
              {
                isVIP === 1 &&
                <img src={Vip} className='vip' alt=""/>
              }

            </Brief>
            <Brief style={{fontSize: "12px"}}>学号: {uid}</Brief>
          </Item>
        </Link>
        {
          !isVIP &&
          <a href="javascript:;" className="my-isvip" onClick={() => this.toCourseDetail(139)}></a>
        }
      </List>
    }
    return (
      <div className="flex-container">
        <Flex>
          <Flex.Item>
            <HeaderBar title='我的' arrow={false} cart={false}></HeaderBar>

            {list}

            {
              !uid &&
              <div className="am-list-header"></div>

            }

            <List className="my-list-content">
              <Link to='/purchased'>
                <Item arrow="horizontal">
                  <i className="iconfont iconiconfront-27"></i>
                  已购课程
                </Item>
              </Link>
              <Link to='/shopcart'>
                <Item arrow="horizontal">
                  <i className="iconfont icongouwuche-xianxing"></i>
                  购物车
                </Item>
              </Link>
              <Link to='/myorders'>
                <Item arrow="horizontal">
                  <i className="iconfont iconiconfront-24"></i>
                  课程订单
                </Item>
              </Link>
              <Link to={{
                pathname: '/coupons',
                state: {
                  from: this.props.location.pathname,
                },
              }}>
                <Item arrow="horizontal" className="no-border">
                  <i className="iconfont iconiconfront-52"></i>
                  优惠券
                </Item>
              </Link>
              <div className="am-list-header"></div>

              <Link to='/scholarship'>
                <Item arrow="horizontal" className='btm-scholarship'>
                  <i className="iconfont iconiconfront-51"></i>
                  赚奖学金
                </Item>
              </Link>
            </List>

          </Flex.Item>
        </Flex>
        <WhiteSpace size="lg"/>
      </div>
    )
  }

}

export default WithTab(My);