import React, {Component} from 'react';
import {Alert, View} from 'react-native';
import {readUser, updatePosition, updateUserData} from './../../webservice/AuthApi';
import {responsiveHeight} from 'react-native-responsive-dimensions';
import Icon from 'react-native-vector-icons/FontAwesome5'
import Button from 'apsl-react-native-button'
import I18n from 'react-native-i18n'
import {IlinkEmitter} from "../../utils/events";
import Geolocation from 'react-native-geolocation-service';
let theme = require('./../../utils/theme.json');
const route = require('./../../route.json')
require('./../../utils/Translations')
const height = responsiveHeight(100) - 250;
export default class UpdateInformations extends Component {
static navigatorStyle = {
navBarHidden: false,
navBarBackgroundColor: theme.primaryDark,
navBarTextColor: 'white',
navBarButtonColor: 'white',
drawUnderStatusBar: false,
statusBarColor: theme.primaryDarkAdvanced,
statusBarTextColorScheme: 'light',
};
static options(passProps) {
return {
statusBar: {
drawBehind: false
},
topBar: {
title: {
text: "Mise à jour des informations",
color: "white"
},
background: {
color: theme.primaryDark
}
}
}
}
static navigationOptions = ({navigation}) => {
return {
headerTitle: I18n.t('CHANGE_INFORMATION'),
drawerIcon: ({tintColor}) => (
),
}
};
constructor(props) {
super(props)
this.state = this.initiateItems()
IlinkEmitter.on("langueChange", this.updateLangue.bind(this))
this.showUserState()
}
async showUserState() {
const user = await readUser()
this.setState({user: user})
if (user.longitude <= 0 && user.latitude <= 0) {
Alert.alert(I18n.t('TITLE_NEED_POSITION'), I18n.t('TEXT_NEED_POSITION'), [{text: 'Ok'}])
}
}
updateLangue() {
this.props.navigation.setParams({name: I18n.t('CHANGE_INFORMATION')})
this.forceUpdate()
}
render() {
return (
);
}
initiateItems() {
return {
positionEnabled: false,
}
}
onClickUpdatePosition() {
this.setState({positionEnabled: true});
Geolocation.getCurrentPosition((position) => {
console.log("CURRENT POSITION", position);
const myPosition = position.coords;
updatePosition(myPosition.longitude, myPosition.latitude).then((response) => {
var title = '';
var message = '';
this.setState({positionEnabled: false})
console.log(response.error)
if (response.error === undefined) {
updateUserData({longitude: myPosition.longitude, latitude: myPosition.latitude})
message = I18n.t('POSITION_UPDATE_SUCCESS_TEXT')
title = I18n.t('UPDATE_SUCCESS');
} else {
title = I18n.t("TITLE_UPDATE_POSITION_FAILED")
switch (response.error) {
case -3:
message = I18n.t('TEXT_UDATE_POSITION_FAILED_1');
break
case -2:
message = I18n.t('TEXT_UDATE_POSITION_FAILED_2');
break;
}
}
Alert.alert(title, message, [{
text: "Ok", onPress: () => {
this.props.navigation.popToTop()
}
}]);
}).catch((e) => {
console.log(e);
this.setState({positionEnabled: false})
})
}, (e) => {
console.log(e);
Alert.alert(I18n.t('ERROR_LABEL'), e.message, [{
text: "Ok", onPress: () => {
this.props.navigation.popToTop();
}
}]);
}, this.props.geolocationOptions);
}
}