import React, { useState } from 'react';
import {
  SafeAreaView,
  StyleSheet,
  ScrollView,
  View,
  Text,
  StatusBar,
  Image,
  TouchableOpacity
} from 'react-native';

import {
  Header,
  LearnMoreLinks,
  Colors,
  DebugInstructions,
  ReloadInstructions,
} from 'react-native/Libraries/NewAppScreen';
//import I18n from './i18n';
import { url } from './resources/fetchInfo.json'

class StudentWeek extends React.Component {
	constructor(props) {
		super(props)
		this.state = {
			isLoading: true,
			hobbyExpanded: false,
			achievementExpanded: false,
			messageExpanded: false,
			hobbyArrow:require('./assets/expand.png'),
			achievementArrow:require('./assets/expand.png'),
			messageArrow:require('./assets/expand.png')
		}
	}

	clickHobby() {
		if (!this.state.hobbyExpanded) this.setState({hobbyExpanded:true, hobbyArrow: require('./assets/collapse.png')});
		else this.setState({hobbyExpanded: false,hobbyArrow:require('./assets/expand.png')});
	}
	clickAchievements() {
		if (!this.state.achievementExpanded) this.setState({achievementExpanded:true, achievementArrow: require('./assets/collapse.png')});
		else this.setState({achievementExpanded: false, achievementArrow:require('./assets/expand.png')});
	}
	clickMessages() {
		if (!this.state.messageExpanded) this.setState({messageExpanded:true, messageArrow: require('./assets/collapse.png')});
		else this.setState({messageExpanded: false, messageArrow:require('./assets/expand.png')});
	}
	
	
	componentDidMount() {
		fetch(`${url}/api/en/student`,{
		  headers: {
			'Cache-Control': 'no-cache'
		  }}
		).then((response) => {
			return response.text();
		}).then((json) => {
			this.setState({data: JSON.parse(json),isLoading:false});
		}).catch((error) => console.error(error))
	}
	
	render() {
		if (this.state.isLoading) {
			return <View/>
		} else {
			const iconURI = this.state.data.icon !== undefined?`data:image/png;charset=utf-8;base64,${this.state.data.icon}`:'';
			const hobbyText = (<Text style = {{marginLeft: 50, paddingHorizontal: '2%', paddingBottom: '2%'}}>{this.state.data.hobbies}</Text>)
			const achievementText = (<Text style = {{marginLeft: 50, paddingHorizontal: '2%', paddingBottom: '2%'}}>{this.state.data.achievements}</Text>)
			const messageText = (<Text style = {{marginLeft: 50, paddingHorizontal: '2%', paddingBottom: '2%'}}>{this.state.data.messages}</Text>)
			return (
				<ScrollView style={{paddingTop:'5%',paddingHorizontal:'10%', backgroundColor: 'white', height: '100%'}}>
					<View style={{backgroundColor: 'white',borderRadius: 150, height: 300, width: 300, alignSelf: 'center', shadowColor: 'red', shadowOffset: {width: 0, height: 2}, shadowOpacity: 0.5, shadowRadius: 7}}>
						<Image style={{resizeMode: 'cover',borderRadius: 150, height: 300, width: 300, alignSelf: 'center'}} source = {{iconURI}} /> 
					</View>
					<Text style={{fontSize:28,marginTop:'5%',textAlign:'center'}}>{this.state.data.name}</Text>
					<Text style={{fontSize:20,textAlign:'center', fontWeight: '200'}}>Grade {this.state.data.year}</Text>
					<View>
						<View style={{display: 'flex', padding:'2%', borderRadius: 8, marginTop:'5%'}}>
							<TouchableOpacity onPress = {this.clickHobby.bind(this)}>
								<View style={{display:'flex', flexDirection: 'row'}}>
									<Image source = {require('./assets/hobbies.png')} />
									<View style = {{display: 'flex', flexDirection: 'row', width: '85%', justifyContent: 'space-between', paddingHorizontal:'2%',}}>
										<Text style={{fontSize: 20,  alignSelf: 'center'}}>Hobbies</Text>
										<Image source = {this.state.hobbyArrow} style={{alignSelf:'center'}}/>
									</View>
								</View>
								{this.state.hobbyExpanded?hobbyText:<></>}
							</TouchableOpacity>
							<TouchableOpacity onPress = {this.clickAchievements.bind(this)}>
								<View style={{display: 'flex', borderTopWidth: 1, borderTopColor: '#8D8D8D', shadowColor: 'black', flexDirection: 'row'}}>
									<Image source = {require('./assets/achievements.png')} />
									<View style = {{display: 'flex', flexDirection: 'row', width: '85%', justifyContent: 'space-between', paddingHorizontal:'2%',}}>
										<Text style={{fontSize: 20, alignSelf: 'center'}}>Achievements</Text>
										<Image source = {this.state.achievementArrow} style={{alignSelf:'center'}}/>
									</View>
								</View>
								{this.state.achievementExpanded?achievementText:<></>}
							</TouchableOpacity>
							<TouchableOpacity onPress = {this.clickMessages.bind(this)}>
								<View style={{display: 'flex', borderTopWidth: 1, borderTopColor: '#8D8D8D', shadowColor: 'black', flexDirection: 'row'}}>
									<Image source = {require('./assets/message.png')} />
									<View style = {{display: 'flex', flexDirection: 'row', width: '85%', justifyContent: 'space-between', paddingHorizontal:'2%',}}>
										<Text style={{fontSize: 20, alignSelf: 'center'}}>Messages</Text>
										<Image source = {this.state.messageArrow} style={{alignSelf:'center'}}/>
									</View>
								</View>
								{this.state.messageExpanded?messageText:<></>}
							</TouchableOpacity>
						</View>
						
					</View>
					
				</ScrollView>
			)
		}
	}
}

export default StudentWeek;