Correction de bugs

This commit is contained in:
Brice 2020-11-20 18:54:03 +01:00
parent 4a574e9a6f
commit 3f614d5a38
7 changed files with 1238 additions and 1247 deletions

File diff suppressed because one or more lines are too long

View File

@ -177,7 +177,7 @@
"ID_SAVINGS": "Saving ID",
"NON_APPLICABLE": "Not applicable",
"DATE": "Date",
"PAIEMENT_EAU_ELECTRICITY": "Water bill",
"PAIEMENT_EAU": "Water bill",
"PAIEMENT_ELECTRICITY": "Electricity bill",
"PAIEMENT_ECOLE": "School fees",
"PAIEMENT_CREDIT_TELEPHONIQUE": "Phone credit bills",

View File

@ -7,6 +7,7 @@ import I18n from "react-native-i18n"
import 'moment/locale/fr';
import 'moment/locale/es-us';
import 'moment/locale/en-au';
import 'moment/locale/en-gb';
import 'moment/locale/en-ca';
import 'moment/locale/en-ie';
import 'moment/locale/en-il';
@ -23,7 +24,7 @@ export class HistoryItem extends React.Component {
constructor(props) {
super(props);
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-us";
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-gb";
console.log("Current Locale item", this.currentLocale);
moment.locale(this.currentLocale);
this.state = this.initState();
@ -132,7 +133,7 @@ export class HistoryItemSectionned extends PureComponent {
constructor(props) {
super(props);
this.state = this.initState();
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-us";
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-gb";
moment.locale(this.currentLocale);
}
@ -246,7 +247,7 @@ export class HistoryListItem extends React.Component {
constructor(props) {
super(props);
this.state = this.initState();
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-us";
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-gb";
moment.locale(this.currentLocale);
}

View File

@ -62,7 +62,7 @@ class HistoryItemDetails extends Component {
this.item = this.props.navigation.getParam("item", null).item;
}
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-us";
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-gb";
moment.locale(this.currentLocale);
let sta = ''

View File

@ -72,7 +72,7 @@ class MyHistory extends React.Component {
constructor(props) {
super(props, true);
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-us";
this.currentLocale = I18n.locale.includes("fr") ? "fr" : "en-gb";
moment.locale(this.currentLocale);
this.state = this.initState();
readUser().then((user) => {

View File

@ -1,310 +1,318 @@
import React, { Component } from 'react';
import MapView, { Marker, MarkerAnimated } from "react-native-maps"
import React, {Component} from 'react';
import MapView, {Marker, MarkerAnimated} from "react-native-maps"
import PropTypes from 'prop-types';
import {
StyleSheet,
View,
Image,
Text,
Alert
StyleSheet,
View,
Image,
Text,
Alert
} from 'react-native';
const theme = require("../../utils/theme");
import { responsiveHeight, responsiveWidth } from "react-native-responsive-dimensions";
import {responsiveHeight, responsiveWidth} from "react-native-responsive-dimensions";
import IMarker from "./IMarker";
import I18n from "react-native-i18n";
import MapViewDirections from 'react-native-maps-directions';
const API_KEY = "AIzaSyAYOEp-Pckvc3TwOIulCICokKgmp14rGHI";
const mnetwork = require('./../../datas/img/png/home_network.png');
const othernetwork = require('./../../datas/img/png/other_net.png');
import { copilot, CopilotStep } from 'react-native-copilot';
import { IlinkEmitter } from "./../../utils/events";
import {copilot, CopilotStep} from 'react-native-copilot';
import {IlinkEmitter} from "./../../utils/events";
import DeviceInfo from 'react-native-device-info';
class IMap extends Component {
static propTypes = {
markers: PropTypes.array,
map: PropTypes.object,
network: PropTypes.object,
myNetwork: PropTypes.object,
selectedMarker: PropTypes.object,
myPosition: PropTypes.object,
onMarkerClick: PropTypes.func,
initialRegion: PropTypes.object,
typeMap: PropTypes.string,
needRoad: PropTypes.bool,
isNeedUserFocus: PropTypes.bool,
onNeedRoadReady: PropTypes.func,
onNeedRoadError: PropTypes.func,
onMapReady: PropTypes.func,
onLayout: PropTypes.func
};
static propTypes = {
markers: PropTypes.array,
map: PropTypes.object,
network: PropTypes.object,
myNetwork: PropTypes.object,
selectedMarker: PropTypes.object,
myPosition: PropTypes.object,
onMarkerClick: PropTypes.func,
initialRegion: PropTypes.object,
typeMap: PropTypes.string,
needRoad: PropTypes.bool,
isNeedUserFocus: PropTypes.bool,
onNeedRoadReady: PropTypes.func,
onNeedRoadError: PropTypes.func,
onMapReady: PropTypes.func,
onLayout: PropTypes.func
};
static defaultProps = {
isNeedUserFocus: false
};
constructor(props) {
super(props)
this.state = {
markers: [],
roadReady: false,
isNeedUserFocus: false,
positionMarkerText: I18n.t("YOUR_THERE")
}
IlinkEmitter.on("langueChange", this.updateLangue.bind(this));
}
static defaultProps = {
isNeedUserFocus: false
};
getPositionMarkerText() {
let currentLanguage = I18n.currentLocale();
let myPositionMarkerText = null;
switch (currentLanguage) {
case "fr":
myPositionMarkerText = "Vous êtes ici";
break;
constructor(props) {
super(props)
this.state = {
markers: [],
roadReady: false,
isNeedUserFocus: false,
positionMarkerText: I18n.t("YOUR_THERE")
}
IlinkEmitter.on("langueChange", this.updateLangue.bind(this));
}
case "en":
myPositionMarkerText = "Your are here";
break;
getPositionMarkerText() {
let currentLanguage = I18n.currentLocale();
let myPositionMarkerText = null;
switch (currentLanguage) {
case "fr":
myPositionMarkerText = "Vous êtes ici";
break;
default:
myPositionMarkerText = I18n.t("YOUR_THERE")
break;
case "en":
myPositionMarkerText = "You are here";
break;
}
default:
myPositionMarkerText = I18n.t("YOUR_THERE")
break;
return myPositionMarkerText;
}
}
updateLangue() {
//Alert.alert("Langue", I18n.currentLocale(), [{ text: "Ok", onPress: () => { } }]);
this.setState({ positionMarkerText: this.getPositionMarkerText() })
}
return myPositionMarkerText;
}
mapRef = (ref) => {
this.mapview = ref
}
updateLangue() {
//Alert.alert("Langue", I18n.currentLocale(), [{ text: "Ok", onPress: () => { } }]);
this.setState({positionMarkerText: this.getPositionMarkerText()})
}
componentDidUpdate(prevProps, prevState) {
if (prevState.positionMarkerText !== this.state.positionMarkerText) {
this.forceUpdate();
}
}
mapRef = (ref) => {
this.mapview = ref
}
getMapRef = () => this.mapview
componentWillReceiveProps(nextProps, nextContext) {
const markers = this.state.markers
const newmarkers = nextProps.markers
if (markers.length <= 0)
this.setState({ markers: newmarkers })
else if (markers.length !== newmarkers) {
this.setState({ markers: newmarkers })
}
this.setState({ isNeedUserFocus: nextProps.isNeedUserFocus })
}
componentDidUpdate(prevProps, prevState) {
if (prevState.positionMarkerText !== this.state.positionMarkerText) {
this.forceUpdate();
}
}
render() {
const { markers, initialRegion, myPosition, myNetwork, typeMap, selectedMarker } = this.props
if (initialRegion !== null && myNetwork !== null)
return (
<View style={styles.container}>
<MapView
style={{ flex: 1 }}
initialRegion={initialRegion}
mapType={typeMap}
ref={(re) => this.mapview = re}
onMapReady={this.props.onMapReady}
onLayout={this.props.onLayout}
onRegionChangeComplete={(re) => { this.onRegionChangeOver(re) }}>
{this.state.markers.map((item, index) => {
return (
<IMarker
isUser={false}
title={item.lastname}
isSelected={(selectedMarker && selectedMarker.id === item.id)}
data={item}
onPress={(e, marker) => this.props.onMarkerClick(e, marker)}
network={myNetwork}
/>)
})}
{this.renderMyPosition()}
{this.makeDirection()}
getMapRef = () => this.mapview
</MapView>
</View>)
else return (<View />)
}
focusToUser() {
this.setState({ isNeedUserFocus: true })
}
closeUserFocus() {
this.setState({ isNeedUserFocus: false })
}
onRegionChangeOver(region) {
componentWillReceiveProps(nextProps, nextContext) {
const markers = this.state.markers
const newmarkers = nextProps.markers
if (markers.length <= 0)
this.setState({markers: newmarkers})
else if (markers.length !== newmarkers) {
this.setState({markers: newmarkers})
}
this.setState({isNeedUserFocus: nextProps.isNeedUserFocus})
}
}
makeDirection() {
let { myPosition, selectedMarker, needRoad } = this.props
if (myPosition !== null && selectedMarker !== null && selectedMarker !== undefined && myPosition !== undefined && needRoad) {
setTimeout(() => {
if (!this.state.roadReady) {
this.setState({ roadReady: true })
this.props.onNeedRoadError()
}
}, 10000)
render() {
const {markers, initialRegion, myPosition, myNetwork, typeMap, selectedMarker} = this.props
if (initialRegion !== null && myNetwork !== null)
return (
<View style={styles.container}>
<MapView
style={{flex: 1}}
initialRegion={initialRegion}
mapType={typeMap}
ref={(re) => this.mapview = re}
onMapReady={this.props.onMapReady}
onLayout={this.props.onLayout}
onRegionChangeComplete={(re) => {
this.onRegionChangeOver(re)
}}>
{this.state.markers.map((item, index) => {
return (
<IMarker
isUser={false}
title={item.lastname}
isSelected={(selectedMarker && selectedMarker.id === item.id)}
data={item}
onPress={(e, marker) => this.props.onMarkerClick(e, marker)}
network={myNetwork}
/>)
})}
{this.renderMyPosition()}
{this.makeDirection()}
return (<MapViewDirections
origin={myPosition}
destination={selectedMarker}
apikey={API_KEY}
strokeWidth={3}
onReady={(data) => {
this.setState({ roadReady: true })
this.props.onNeedRoadReady(data)
}
}
onError={() => {
this.setState({ roadReady: true })
this.props.onNeedRoadError()
}
}
strokeColor={theme.primary}
/>)
}
}
</MapView>
</View>)
else return (<View/>)
}
renderMyPosition() {
const { myPosition, myNetwork } = this.props
if (myPosition != null) {
return (<IMarker
isUser={true}
lang={this.props.lang}
isNeedFocus={this.state.isNeedUserFocus}
title={this.state.positionMarkerText}
data={{
longitude: myPosition.longitude,
latitude: myPosition.latitude
}}
/>)
}
}
focusToUser() {
this.setState({isNeedUserFocus: true})
}
closeUserFocus() {
this.setState({isNeedUserFocus: false})
}
onRegionChangeOver(region) {
}
makeDirection() {
let {myPosition, selectedMarker, needRoad} = this.props
if (myPosition !== null && selectedMarker !== null && selectedMarker !== undefined && myPosition !== undefined && needRoad) {
setTimeout(() => {
if (!this.state.roadReady) {
this.setState({roadReady: true})
this.props.onNeedRoadError()
}
}, 10000)
return (<MapViewDirections
origin={myPosition}
destination={selectedMarker}
apikey={API_KEY}
strokeWidth={3}
onReady={(data) => {
this.setState({roadReady: true})
this.props.onNeedRoadReady(data)
}
}
onError={() => {
this.setState({roadReady: true})
this.props.onNeedRoadError()
}
}
strokeColor={theme.primary}
/>)
}
}
renderMyPosition() {
const {myPosition, myNetwork} = this.props
if (myPosition != null) {
return (<IMarker
isUser={true}
lang={this.props.lang}
isNeedFocus={this.state.isNeedUserFocus}
title={this.state.positionMarkerText}
data={{
longitude: myPosition.longitude,
latitude: myPosition.latitude
}}
/>)
}
}
}
export default IMap;
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: '#FFF',
},
myClusterTextStyle: {
color: "white"
},
myClusterStyle: {
backgroundColor: theme.accent,
height: 32,
justifyContent: 'center',
alignItems: 'center',
width: 32,
borderRadius: 16
},
rowContainer: {
height: 52,
flex: 1,
flexDirection: 'row',
justifyContent: 'flex-start',
alignItems: 'center',
},
iconContainer: {
marginRight: 16,
},
mapmarker: {
width: 52,
height: 52,
},
slidingup: {
backgroundColor: "transparent",
position: "absolute",
height: 300,
bottom: 0,
right: 35,
zIndex: 1
},
panel: {
flex: 1,
backgroundColor: 'white',
position: 'relative'
},
panelHeader: {
height: 120,
backgroundColor: '#b197fc',
alignItems: 'center',
justifyContent: 'center'
},
favoriteIcon: {
left: responsiveWidth(75),
backgroundColor: theme.primary,
width: 64,
justifyContent: 'center',
alignContent: 'center',
bottom: -64,
position: 'absolute',
height: 64,
padding: 8,
zIndex: 1,
borderRadius: 32,
},
hambuger: {
},
topBar: {
position: 'absolute',
alignSelf: 'center',
justifyContent: 'center',
alignItems: 'center',
marginTop: responsiveHeight(4),
width: responsiveWidth(95),
container: {
flex: 1,
backgroundColor: '#FFF',
},
myClusterTextStyle: {
color: "white"
},
myClusterStyle: {
backgroundColor: theme.accent,
height: 32,
justifyContent: 'center',
alignItems: 'center',
width: 32,
borderRadius: 16
},
rowContainer: {
height: 52,
flex: 1,
flexDirection: 'row',
justifyContent: 'flex-start',
alignItems: 'center',
},
iconContainer: {
marginRight: 16,
},
mapmarker: {
width: 52,
height: 52,
},
slidingup: {
backgroundColor: "transparent",
position: "absolute",
height: 300,
bottom: 0,
right: 35,
zIndex: 1
},
panel: {
flex: 1,
backgroundColor: 'white',
position: 'relative'
},
panelHeader: {
height: 120,
backgroundColor: '#b197fc',
alignItems: 'center',
justifyContent: 'center'
},
favoriteIcon: {
left: responsiveWidth(75),
backgroundColor: theme.primary,
width: 64,
justifyContent: 'center',
alignContent: 'center',
bottom: -64,
position: 'absolute',
height: 64,
padding: 8,
zIndex: 1,
borderRadius: 32,
},
hambuger: {},
topBar: {
position: 'absolute',
alignSelf: 'center',
justifyContent: 'center',
alignItems: 'center',
marginTop: responsiveHeight(4),
width: responsiveWidth(95),
},
searchInput: {
width: responsiveWidth(70),
fontSize: 14
},
search: {
width: responsiveWidth(70),
height: responsiveHeight(10),
backgroundColor: '#00000000',
},
searchInput: {
width: responsiveWidth(70),
fontSize: 14
},
search: {
width: responsiveWidth(70),
height: responsiveHeight(10),
backgroundColor: '#00000000',
},
},
map: {
width: responsiveWidth(100),
height: responsiveHeight(100),
},
backgroundd_drawer: {
backgroundColor: '#000',
},
cardsearch: {
width: responsiveWidth(90),
height: responsiveHeight(10),
position: 'absolute',
alignSelf: 'center',
marginTop: 5,
map: {
width: responsiveWidth(100),
height: responsiveHeight(100),
},
backgroundd_drawer: {
backgroundColor: '#000',
},
cardsearch: {
width: responsiveWidth(90),
height: responsiveHeight(10),
position: 'absolute',
alignSelf: 'center',
marginTop: 5,
},
actionButtonIcon: {
fontSize: 20,
height: 22,
},
actionButtonIcon: {
fontSize: 20,
height: 22,
color: 'white',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
color: 'white',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});

View File

@ -814,7 +814,7 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant + ' ' + wallet.currency_code}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant + ' ' + this.state.wallet.currency_code}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -823,7 +823,7 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant_rembourse + ' ' + wallet.currency_code}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant_rembourse + ' ' + this.state.wallet.currency_code}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -832,7 +832,7 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.partiellement_rembourse + ' ' + wallet.currency_code}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.partiellement_rembourse + ' ' + this.state.wallet.currency_code}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -841,7 +841,7 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.taxe + ' ' + wallet.currency_code}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.taxe + ' ' + this.state.wallet.currency_code}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -850,7 +850,7 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.interet + ' ' + wallet.currency_code}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.interet + ' ' + this.state.wallet.currency_code}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -859,7 +859,7 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.retrait_cash + ' ' + wallet.currency_code}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.retrait_cash == 1 ? I18n.t('YES') : I18n.t('NO')}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -873,11 +873,11 @@ class WalletDetail extends Component {
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
<View style={{flex: 1}}>
<Text tyle={[Typography.body2]}>{I18n.t('DEMAND_DATE')}</Text>
<Text tyle={[Typography.body2]}>{I18n.t('VALIDATION_DATE')}</Text>
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.date_demande}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.date_validation}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -911,16 +911,16 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{displayTransactionType(this.state.historyItemDetail.type_historique)}</Text>
style={[Typography.caption1, Color.grayColor]}>{I18n.t(displayTransactionType(this.state.historyItemDetail.type_historique))}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
<View style={{flex: 1}}>
<Text style={[styles.body2]}>{I18n.t('ID_DEMAND')}</Text>
<Text style={[styles.body2]}>{I18n.t('ID_SAVINGS')}</Text>
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.id_demande}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.id_epargne}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -956,7 +956,16 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant + ' ' + wallet.currency_code}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant + ' ' + this.state.wallet.currency_code}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
<View style={{flex: 1}}>
<Text tyle={[Typography.body2]}>{I18n.t('AMOUNT_WITHDRAWAL')}</Text>
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.montant_retire + ' ' + this.state.wallet.currency_code}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -965,7 +974,7 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.taxe + ' ' + wallet.currency_code}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.taxe + ' ' + this.state.wallet.currency_code}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>
@ -974,7 +983,7 @@ class WalletDetail extends Component {
</View>
<View style={{flex: 1, alignItems: 'flex-end'}}>
<Text
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.interet + ' ' + wallet.currency_code}</Text>
style={[Typography.caption1, Color.grayColor]}>{this.state.historyItemDetail.interet + ' ' + this.state.wallet.currency_code}</Text>
</View>
</View>
<View style={{flexDirection: 'row', marginTop: 10}}>