import React, { Component } from 'react';
import {AppRegistry, StyleSheet, ActivityIndicator, WebView, StatusBar, Text, View, AsyncStorage} from 'react-native';
export default class Assalate extends Component {
constructor(props) {
super(props);
this.state = {
data: {},
isLoading: true,
refreshing: false,
}
}
/**
* componentDidMount()
* cette fonction est executée une fois au démmarage de l'appli
*/
componentDidMount() {
/* recuperer les données depuis AsyncStorage */
AsyncStorage.multiGet(['AS_date', 'AS_fajr', 'AS_dohr', 'AS_asr', 'AS_maghreb', 'AS_ichaa', 'AS_vendredi', 'AS_url'])
.then((value) => {
this.setState({
data: {
Date: value[0][1],
Fajr: value[1][1],
Dohr: value[2][1],
Asr: value[3][1],
Maghreb: value[4][1],
Ichaa: value[5][1],
Vendredi: value[6][1],
Url: value[7][1]
},
isLoading: false,
});
});
this.callApi();
}
/**
* callApi()
* recuperer les données depuis api.latrach.net
*/
callApi() {
this.setState({
isLoading: true,
});
fetch('http://api.latrach.net/salate/v1', {
method: 'POST',
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({
dateNowYear: '',
dateNowMonth: '',
dateNowDay: '',
})
})
.then((response) => response.json())
.then((responseJson) => {
this.setState({
data: {
Date: responseJson.Date,
Fajr: responseJson.Fajr,
Dohr: responseJson.Dohr,
Asr: responseJson.Asr,
Maghreb: responseJson.Maghreb,
Ichaa: responseJson.Ichaa,
Vendredi: responseJson.Vendredi,
Url: responseJson.Url
},
isLoading: false,
});
/*Strore data Locally for offline */
AsyncStorage.multiSet([
['AS_date', responseJson.Date],
['AS_fajr', responseJson.Fajr],
['AS_dohr', responseJson.Dohr],
['AS_asr', responseJson.Asr],
['AS_maghreb', responseJson.Maghreb],
['AS_ichaa', responseJson.Ichaa],
['AS_vendredi', responseJson.Vendredi],
['AS_url', responseJson.Url]
]);
}).catch(() => {
this.setState({
isLoading: false,
});
})
}
render() {
if (this.state.isLoading) {
return (
<View style={{ flex: 1 }}>
<ActivityIndicator />
</View>
);
}
return (
<View style={{ flex: 1 }}>
<StatusBar
backgroundColor="green"
barStyle="light-content"
/>
<View style={styles.barre}>
<Text style={styles.textDate}>{this.state.data.Date}</Text>
<Text onPress={this.callApi.bind(this)} style={styles.textRefresh}>Actualiser</Text>
</View>
<View style={styles.odd}>
<Text style={[styles.textLeft, styles.textOdd]}>Fajr</Text>
<Text style={[styles.textCenter, styles.textOdd]}>{this.state.data.Fajr}</Text>
<Text style={[styles.textRight, styles.textOdd]}>الفجر</Text>
</View>
<View style={styles.even}>
<Text style={styles.textLeft}>Dohr</Text>
<Text style={styles.textCenter}>{this.state.data.Dohr}</Text>
<Text style={styles.textRight}>الظهر</Text>
</View>
<View style={styles.odd}>
<Text style={[styles.textLeft, styles.textOdd]}>Asr</Text>
<Text style={[styles.textCenter, styles.textOdd]}>{this.state.data.Asr}</Text>
<Text style={[styles.textRight, styles.textOdd]}>العصر</Text>
</View>
<View style={styles.even}>
<Text style={styles.textLeft}>Maghreb</Text>
<Text style={styles.textCenter}>{this.state.data.Maghreb}</Text>
<Text style={styles.textRight}>المغرب</Text>
</View>
<View style={styles.odd}>
<Text style={[styles.textLeft, styles.textOdd]}>Ichaa</Text>
<Text style={[styles.textCenter, styles.textOdd]}>{this.state.data.Ichaa}</Text>
<Text style={[styles.textRight, styles.textOdd]}>العشاء</Text>
</View>
<View style={styles.even}>
<Text style={styles.textLeft}>Vendredi</Text>
<Text style={styles.textCenter}>{this.state.data.Vendredi}*</Text>
<Text style={styles.textRight}>الجمعة</Text>
</View>
<WebView
source={{ uri: this.state.data.Url + '?v=1.9&os=android&app=com.reactnativeassalat' }}
style={styles.news}
/>
</View>
);
}
}
const styles = StyleSheet.create({
barre: { flexDirection: 'row',backgroundColor: '#000' },
textDate: { flex: 2, color: '#fff', textAlign: 'center' , marginTop: 20},
textRefresh: { flex: 1, backgroundColor: '#841584', color: '#fff', textAlign: 'center', marginTop: 20 },
odd: { flexDirection: 'row', backgroundColor: '#29a9bf' },
textOdd: { color: '#fff' },
even: { flexDirection: 'row', backgroundColor: '#fff' },
news: { flexDirection: 'row', backgroundColor: '#f0fbe4' },
textLeft: { flex: 1, textAlign: 'left', paddingLeft: 10 },
textRight: { flex: 1, textAlign: 'right', paddingRight: 10 },
textCenter: { flex: 1, textAlign: 'center' },
});
AppRegistry.registerComponent('Assalate', () => Assalate);