import React, {Component} from 'react'
import {CallApp} from '../../common'
import './index.scss'
import {WithTab} from '@/HOCs'
// import Swiper from 'react-mobile-swiper'
// import createStyle from './createStyle'
import HomeCourseList from './course-list'
import {http, isValidUrl} from '@/utils'
import LiveRoom from './liveRoom'
import {Link} from "react-router-dom"
import {Toast} from 'antd-mobile'
import {connect} from "react-redux"
import TopSwiper from './TopSwiper'
// import ExpandActiveToast from './expandActiveToast'
import AllCourseNavigation from "./all-course"
import {UserGift} from "@common"

// const animateTypes = Swiper.animateTypes

@connect(state => ({
    user: state.user,
}))
class Index extends Component {
    constructor(props) {
        super(props)
        this.state = {
            banner: [],   // 首页banner
            lives: [],  //近期直播
            modules: [],  //首页课程模块儿
            isShow: false,
            islive: false,
            roomMess: '',
            isShowUserGift: false,
            tabdata: [
                {
                    'src': require('./image/freeclass_icon.png'),
                    'name': '公开课',
                    'href': '/study/free-course',
                },
                {
                    'src': require('./image/jingpin_icon.png'),
                    'name': '精品特惠',
                    'href': '/preferential',
                },
                {
                    'src': require('./image/zjxj_icon.png'),
                    'name': '赚奖学金',
                    'href': '/scholarship',
                },
                {
                    'src': require('./image/mryt_icon.png'),
                    'name': '每日一题',
                    'href': '/examination',
                },
                {
                    'src': require('./image/shequ_icon.png'),
                    'name': '社区',
                    'href': 'https://ask.julyedu.com',
                },
            ],
        }
    }

    componentDidMount() {
        this.getIndexData()
        this.userStatus()
    }
    componentWillMount(){
        this.showUserGiftFun()
    }
    userStatus =()=>{
        http.get(`${API['base-api']}/sys/user/new_user_status`).then((res) => {
            const {errno, data} = res.data
            if (errno === 0) {
                if (data.status == 1) {
                    // 新用户登录之后判断是否是新用户
                    this.setState({
                        isShowUserGift: false
                    })
                    Toast.info('新人大礼包已领取成功!', 2)
                } else {
                    this.setState({
                        isShowUserGift: false
                    })
                }
            }
        })
    }

    showUserGiftFun = () => {
        let newer_last_time = localStorage.getItem('newer_last_time') // 获取用户关闭大礼包的时间
        let now_time = (new Date()).valueOf()
        if (!newer_last_time || now_time - newer_last_time > 86400000) {
            this.setState({
                isShowUserGift: true
            })
        } else {
            this.setState({
                isShowUserGift: false
            })
        }
    }
    close = () => {
        this.setState({
            isShowUserGift: false
        })
        let now_time = (new Date()).valueOf() // 获取当前时间
        localStorage.setItem('newer_last_time', now_time)  // 存储关闭时间
    }

    get_newerModal = ()=>{
        this.close()
        this.props.history.push('/passport/login')
    }

    // 首页课程
    getIndexData = () => {
        http.get(`${API.home}/m/home`).then((res) => {
            if (res.data.code === 200) {
                const {data} = res.data || {}
                const modules = Array.isArray(data.modules) ? data.modules : []
                this.setState({
                    banner: data.banner,
                    lives: data.lives,
                    modules,
                })
            } else {
                Toast.info(res.data.msg, 2)
            }

        })
    }


    // 点击近期直播课程弹出预约提示框
    liveCourse = (item) => {
        const {user} = this.props
        const uid = user && user.data && user.data.uid
        if (!uid) {
            this.props.history.push('/passport/login')
        } else {
            if (item.live_status === 0) {
                this.setState({
                    isShow: true,
                    islive: true,
                    roomMess: item,
                })
            } else {
                window.location.href = `${window.location.href.includes('pre') ? 'http://www-pre.julyedu.com' : 'http://www.julyedu.com'}/live/m_room/${item.room_id}`
            }
        }
    }
    // 自组件传给父组件的isshow
    colseBox = (val) => {
        this.setState({isShow: val})
    }

    // 点击头部搜索跳转到搜索页面
    toSearch() {
        this.props.history.push('/search')
    }

    render() {
        return (
            <div className='index-box'>
                <div className='header'>
                    <img
                        className="logo"
                        src="http://julyedu-img-public.oss-cn-beijing.aliyuncs.com/Public/img/index/logo.png"
                        alt=""
                    />
                    {/* <CallApp
            className='to-app'
            text='在APP打开'
          />*/}
                    <div className="right">
                        <Link to={'/intelligent-recommend'}>
              <span className={'intelligent-recommend-entry'}>
                <i className={'mind-icon'}></i>
                智能选课
            </span>
                        </Link>
                        <i
                            className='iconfont iconiconfront- search'
                            onClick={this.toSearch.bind(this)}
                        />
                    </div>
                </div>

                <div className='zw_height'></div>

                {/*支付尾款提示*/}
                {/*<ExpandActiveToast/>*/}

                <div className='index-swiper'>
                    {
                        this.state.banner && this.state.banner.length > 0 &&
                        <TopSwiper bannerList={this.state.banner}/>
                    }
                </div>

                <div className="tabbox">
                    <ul>
                        {
                            this.state.tabdata.map((item, index) => {
                                return (
                                    <li key={index}>
                                        {
                                            isValidUrl(item.href)
                                                ? <a href={item.href}>
                                                    <img src={item.src} alt=""/>
                                                    <span>{item.name}</span>
                                                </a>
                                                : <Link to={item.href}>
                                                    <img src={item.src} alt=""/>
                                                    <span>{item.name}</span>
                                                </Link>
                                        }

                                    </li>
                                )
                            })
                        }
                    </ul>
                </div>

                <p className="borderTop"/>

                {

                    (this.state.lives && this.state.lives.length > 0) ?
                        <div className='lives'>
                            <h2 className="title">近期直播</h2>
                            <ScrollBox
                                livesList={this.state.lives}
                                liveCourse={this.liveCourse}
                            />
                        </div> : null
                }

                <HomeCourseList
                    modules={this.state.modules}
                />

                <AllCourseNavigation/>

                {/* 直播间预约 */}
                {
                    this.state.islive &&
                    <LiveRoom
                        isShow={this.state.isShow}
                        colseBox={this.colseBox}
                        roomMess={this.state.roomMess}
                        getIndexData={this.getIndexData}
                    />
                }

                {
                    this.state.isShowUserGift &&
                    <UserGift close={this.close} get_newerModal={this.get_newerModal}/>
                }
            </div>
        )
    }

}


//近期直播
function ScrollBox(props) {
    return (
        <div className='scroll-box'>
            <ul className='scroll-list'>
                {
                    props.livesList && props.livesList.length > 0 && props.livesList.map((item, index) => {
                        return (
                            <li key={index} className='scroll-item'
                                onClick={e => props.liveCourse(item)}>
                                <div className='item-box'>
                                    {
                                        item.live_status === 0 &&
                                        <span className='no-start'>即将开始</span>
                                    }
                                    {
                                        (item.live_status === 1 || item.live_status === 10) &&
                                        <span className='start'>正在直播</span>
                                    }
                                    <img className="item-img" src={item.live_img} alt=""/>
                                    <div className="item-content">
                                        <h2 className="item-title">{item.live_title}</h2>
                                        <p className="item-teacher">讲师:{item.live_teacher_name}</p>

                                        {/*公开课需预约、付费课不需要预约*/}
                                        {
                                            (item.is_prepare || item.is_free === 0) && item.live_status === 0 &&
                                            <p className="item-time">时间:{item.live_start_time}</p>
                                        }
                                        {
                                            !item.is_prepare && item.live_status === 0 && item.is_free === 1 &&
                                            <button className='item-btn'>预约</button>
                                        }
                                        {
                                            (item.live_status === 1 || item.live_status === 10) &&
                                            <button className='item-btn'>正在直播</button>
                                        }
                                    </div>
                                </div>
                            </li>
                        )
                    })
                }
            </ul>
        </div>
    )
}

export default WithTab(Index)