/*
 * 个人中心页面
 */
import React, { Component } from 'react';
import {
	Platform,
	StyleSheet,
	Text,
	View,
	Image,
	TouchableOpacity,
	ImageBackground,
	Button,
	StatusBar,
	Modal,
	TouchableHighlight,
	DeviceEventEmitter,
	ScrollView
} from 'react-native';
import BasePage from './BasePage';
import Dimensions from './utils/dimensions';
import ShopBox from './components/ShopBox';
import TopicTitle from './components/TopicTitle';
import ScrollRow from './components/ScrollRow';
import CourseTitle from './components/CourseTitle';
import user from './services/user';
import commonUtil from './utils/commonutil';

export default class userCenter extends BasePage {
	componentDidMount() {
		//触发更新
		this.refreshSubScription = DeviceEventEmitter.addListener('infoback', () => {
			user.userMember().then((res) => {
				console.log('个人列表', res);
				// 收藏
				const favoritesList = res.data.favoritesList;
				//观看记录
				const playLogList = res.data.playLogList;
				// 用户消息
				const user = res.data.user;
				// VIP
				const vip = res.data.vip;
				this.setState({
					favoritesList,
					playLogList,
					user,
					vip
				});
			});
		});
		DeviceEventEmitter.emit('infoback');
	}
	componentWillUnmount() {
		this.refreshSubScription.remove();
	}
	state = {
		nickName: '初始昵称',
		user: {},
		ifDiscount: true,
		isVIP: false,
		btnArr: [
			{
				title: '订单',
				icon: require('./images/userCenter/order.png'),
				goTo: 'Order'
			},
			{
				title: '抵用券',
				icon: require('./images/userCenter/discount.png'),
				goTo: 'Ticket'
			},
			{
				title: '客服',
				icon: require('./images/userCenter/service.png'),
				goTo: 'Phone'
			}
		],
		shopData: [
			{
				title: '1个月',
				originPrice: '199',
				price: '49',
				background: require('./images/shopBox/left.png')
			},
			{
				title: '12个月',
				originPrice: '499',
				price: '199',
				background: require('./images/shopBox/right.png')
			}
		],
		discount: {
			title: '限时秒杀',
			icon: require('./images/shopBox/discount.png')
		},
		favoritesList: [],
		playLogList: [],
		vip: false
	};
	renderBtn = (item, index) => {
		return (
			<TouchableOpacity
				key={index}
				onPress={() => this.goTo(`${item.goTo}`)}
				style={{ display: 'flex', justifyContent: 'space-between' }}
			>
				<View style={styles.btnItem}>
					<Image source={item.icon} style={styles.btnIcon} />
					<Text style={styles.btnTitle}>{item.title}</Text>
				</View>
			</TouchableOpacity>
		);
	};
	goBack() {
		//返回上一页
		this.props.navigation.goBack();
	}
	render() {
		return (
			<ScrollView style={{ height: 1100, overflow: 'scroll', backgroundColor: '#fff' }}>
				<View style={styles.topSection}>
					<ImageBackground
						source={require('./images/userCenter/top-bg.png')}
						style={{ width: '100%', height: 203 }}
					>
						<StatusBar
							backgroundColor={'transparent'}
							barStyle={'dark-content'}
							// backgroundColor={"white"}
							translucent={true}
							hidden={false}
						/>
						<View
							style={{
								height: 30,
								// backgroundColor: "white"
								marginTop: 20
							}}
						>
							<CourseTitle
								width={this.getWindowWidth()}
								title="个人中心"
								lefttype={2}
								righttype={2}
								textcolor={'#fff'}
								backPress={() => this.goBack()}
								// backgroundColor={"transparent"}
								rightPress={() => this.toNextPage('PersonalInfo')}
							/>
						</View>
						<View style={styles.userInfo}>
							<TouchableOpacity onPress={() => this.goTo(`PersonalInfo`)}>
								<Image style={styles.userAvatar} source={{ uri: this.state.user.avatar }} />
							</TouchableOpacity>

							<View style={styles.userRight}>
								<View style={styles.userName}>
									<Text style={styles.userNameText}>{this.state.user.nickName}</Text>
									{this.state.vip ? (
										<Image style={styles.vipTag} source={require('./images/common/vip.png')} />
									) : null}
								</View>
								{this.state.vip ? null : (
									<View style={styles.userName}>
										<Text style={styles.vipSologan}>开通vip</Text>
									</View>
								)}
							</View>
						</View>
						<View style={styles.btnBoxWrapper}>
							<View style={styles.btnBox}>
								{this.state.btnArr.map((item, index) => this.renderBtn(item, index))}
							</View>
						</View>
					</ImageBackground>
				</View>
				<View style={styles.discountSection}>
					<ShopBox
						data={this.state.shopData}
						discount={this.state.discount}
						nav={this.props.navigation.navigate}
					/>
				</View>
				<View style={styles.recordSection}>
					<TopicTitle title={'观看记录'} ifTubeShow={true} />
					<ScrollRow itemWidth={106} itemHeight={153} data={this.state.playLogList} />
				</View>
				<View style={styles.collectSection}>
					<TopicTitle title={'我的收藏'} ifTubeShow={true} />
					<ScrollRow itemWidth={106} itemHeight={150} data={this.state.favoritesList} />
				</View>
			</ScrollView>
		);
	}
	goTo(index) {
		if (index === 'Phone') {
			commonUtil.callPhone('.......');
		} else {
			this.toNextPage(index);
		}
	}
}

const styles = StyleSheet.create({
	topSection: {
		height: 250,
		width: Dimensions.width
		// backgroundColor: 'red'
	},
	userInfo: {
		width: Dimensions.width,
		height: 70,
		flexDirection: 'row',
		justifyContent: 'flex-start',
		alignItems: 'center'
	},
	userAvatar: {
		width: 67,
		height: 67,
		borderRadius: 55,
		marginHorizontal: 12
	},
	userRight: {
		flexDirection: 'column'
	},
	userName: {
		flexDirection: 'row',
		alignItems: 'center'
	},
	userNameText: {
		fontSize: 18,
		color: '#fff',
		fontWeight: '500',
		marginRight: 9
	},
	vipSologan: {
		fontSize: 14,
		color: '#fff'
	},
	btnBoxWrapper: {
		width: Dimensions.width,
		alignItems: 'center',
		marginTop: 16
	},
	btnBox: {
		width: Dimensions.width * 343 / 375,
		height: 100,
		borderRadius: 10,
		shadowColor: '#000',
		// shadowOffset: 1,
		shadowOpacity: 2,
		shadowRadius: 5,
		elevation: 4,
		backgroundColor: '#fff',
		justifyContent: 'space-around',
		flexDirection: 'row'
	},
	btnItem: {
		height: '100%',
		flexDirection: 'column',
		justifyContent: 'center',
		alignItems: 'center'
	},
	btnIcon: {
		width: 36,
		height: 24,
		marginBottom: 7
	},
	btnTitle: {
		color: '#3f3f3f',
		fontSize: 16
	},
	discountSection: {
		width: Dimensions.width
		// height: 242,
		// backgroundColor: 'green'
	},
	recordSection: {
		width: Dimensions.width,
		height: 235
		// backgroundColor: 'blue'
	},
	collectSection: {
		width: Dimensions.width,
		height: 255,
		marginBottom: 20
		// backgroundColor: 'yellow'
	}
});