Initialize redux

This commit is contained in:
Brice Zele 2020-04-17 23:03:04 +01:00
parent 462d0015ed
commit 350b2e3b91
37 changed files with 983 additions and 336 deletions

108
App.js
View File

@ -8,7 +8,7 @@
import React, { Component } from 'react';
import { Platform, StyleSheet, Text, View, YellowBox } from 'react-native';
import { createSwitchNavigator, createStackNavigator, createDrawerNavigator, createAppContainer, createBottomTabNavigator } from 'react-navigation';
import { createSwitchNavigator, createStackNavigator, createDrawerNavigator, createAppContainer, createBottomTabNavigator, HeaderBackButton } from 'react-navigation';
import Connect from "./screens/login/Connect";
import SplashScreen from "./screens/splashscreen/SplashScreen";
import HelpMenu from "./screens/help/HelpMenu";
@ -39,8 +39,11 @@ import IconWithBadge from "./screens/IconWithBadge"
import I18n from "react-native-i18n";
import Filter from './screens/home/Filter';
import { createMaterialBottomTabNavigator } from 'react-navigation-material-bottom-tabs';
import Networks from './screens/home/Networks';
import Wallet from './screens/wallet';
import WalletDetail from './screens/wallet/WalletDetail';
import WalletSelect from './screens/wallet/WalletSelect';
import { PersistGate } from 'redux-persist/integration/react';
import { store, persistor } from './redux/store';
const instructions = Platform.select({
ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
android:
@ -49,22 +52,11 @@ const instructions = Platform.select({
});
const theme = require("./utils/theme")
class HomeScreen extends Component {
const WalletSelectStack = createStackNavigator({
walletSelect: WalletSelect
});
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>Welcome to iLink World!</Text>
<Text style={styles.instructions}>To get started, edit App.js</Text>
<Text style={styles.instructions}>{instructions}</Text>
</View>
);
}
}
const AuthStack = createStackNavigator({
login: Connect,
helpMenu: HelpMenu,
@ -99,7 +91,24 @@ const AppAgentStack = createDrawerNavigator({
sta: createStackNavigator({
home: Home,
useraccount: UserAccount,
wallet: Wallet,
walletSelect: {
screen: WalletSelectStack,
navigationOptions: ({ navigation }) => ({
header: null,
headerMode: 'none',
headerTitle: null,
activeColor: '#f0edf6',
inactiveColor: '#3e2465',
barStyle: { backgroundColor: '#694fad' },
headerLeft: (<HeaderBackButton />),
drawerLabel: I18n.t('CREDIT_MANAGE'),
drawerIcon: ({ tintColor }) => (
<Icon
name={'credit-card'}
size={24}
/>)
}),
},
Historique:
{
screen: createBottomTabNavigator({ myDemand: MyHistory }, {
@ -121,7 +130,7 @@ const AppAgentStack = createDrawerNavigator({
activeColor: '#f0edf6',
inactiveColor: '#3e2465',
barStyle: { backgroundColor: '#694fad' },
headerLeft: (<HeaderBackButton />),
drawerLabel: I18n.t('CREDIT_MANAGE'),
drawerIcon: ({ tintColor }) => (
<Icon
@ -137,7 +146,8 @@ const AppAgentStack = createDrawerNavigator({
updateinformation: UpdateInformations,
notificationview: Notifications,
configuration: Configurations,
about: About
about: About,
walletDetail: WalletDetail
})
}, {
contentComponent: OptionsMenu,
@ -149,7 +159,24 @@ const AppAdministratorStack = createDrawerNavigator({
sta: createStackNavigator({
home: Home,
useraccount: UserAccount,
wallet: Wallet,
walletSelect: {
screen: WalletSelectStack,
navigationOptions: ({ navigation }) => ({
header: null,
headerMode: 'none',
headerTitle: null,
activeColor: '#f0edf6',
inactiveColor: '#3e2465',
barStyle: { backgroundColor: '#694fad' },
headerLeft: (<HeaderBackButton />),
drawerLabel: I18n.t('CREDIT_MANAGE'),
drawerIcon: ({ tintColor }) => (
<Icon
name={'credit-card'}
size={24}
/>)
}),
},
Historique: {
screen: createBottomTabNavigator({
myDemand: MyHistory, OthersDemand: MyHistory
@ -186,7 +213,8 @@ const AppAdministratorStack = createDrawerNavigator({
superviseurgroup: SuperViseurGroupeHome,
notificationview: Notifications,
configuration: Configurations,
about: About
about: About,
walletDetail: WalletDetail
})
},
@ -199,7 +227,24 @@ const AppSuperAdministrator = createDrawerNavigator({
sta: createStackNavigator({
home: Home,
useraccount: UserAccount,
wallet: Wallet,
walletSelect: {
screen: WalletSelectStack,
navigationOptions: ({ navigation }) => ({
header: null,
headerMode: 'none',
headerTitle: null,
activeColor: '#f0edf6',
inactiveColor: '#3e2465',
barStyle: { backgroundColor: '#694fad' },
headerLeft: (<HeaderBackButton />),
drawerLabel: I18n.t('CREDIT_MANAGE'),
drawerIcon: ({ tintColor }) => (
<Icon
name={'credit-card'}
size={24}
/>)
}),
},
Historique: {
screen: createBottomTabNavigator({ OthersDemand: MyHistory }, {
headerMode: "none",
@ -230,7 +275,8 @@ const AppSuperAdministrator = createDrawerNavigator({
superviseurgroup: SuperViseurGroupeHome,
notificationview: Notifications,
configuration: Configurations,
about: About
about: About,
walletDetail: WalletDetail
})
}, {
@ -252,7 +298,19 @@ export const AppNavigator = createSwitchNavigator({
});
const AppContainer = createAppContainer(AppNavigator);
export default AppContainer;
class App extends React.Component {
render() {
return (
<Provider store={store}>
<PersistGate loading={null} persistor={persistor}>
<AppContainer />
</PersistGate>
</Provider>
);
}
}
export default App;
const styles = StyleSheet.create({
container: {

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -1,31 +1,31 @@
{
"discover":"ILink",
"stackRoot":"stackcenter",
"historiques":"Historique",
"options":"menu",
"drawer":"drawer",
"credrequester":"creditrequest",
"login":"Login",
"first":"Home",
"typeaccountcreate":"typeaccountcreate",
"simpleusercreate":"simpleusercreate",
"splashscreen":"spashscreen",
"useraccount":"useraccount",
"configurations":"configuration",
"notification":"notification",
"modalhistoryfilter":"filterhistory",
"superviseurgroup":"superviseurgroup",
"historyItemDetails":"historyItemDetails",
"forgotpass":"forgottenpass",
"confirmcode":"confirmcode",
"creationstep2":"step2",
"help":"help",
"modaloading":"modaloading",
"activateaccount":"activateaccout",
"addNetwork":"addNetwork",
"notificationView":"notificationview",
"generateNetwork":"generateNetwork",
"helpmenu":"helpMenu",
"updateinfo":"updateinformation",
"intersticielAds":"intersticielAds"
"discover": "ILink",
"stackRoot": "stackcenter",
"historiques": "Historique",
"options": "menu",
"drawer": "drawer",
"credrequester": "creditrequest",
"login": "Login",
"first": "Home",
"typeaccountcreate": "typeaccountcreate",
"simpleusercreate": "simpleusercreate",
"splashscreen": "spashscreen",
"useraccount": "useraccount",
"configurations": "configuration",
"notification": "notification",
"modalhistoryfilter": "filterhistory",
"superviseurgroup": "superviseurgroup",
"historyItemDetails": "historyItemDetails",
"forgotpass": "forgottenpass",
"confirmcode": "confirmcode",
"creationstep2": "step2",
"help": "help",
"modaloading": "modaloading",
"activateaccount": "activateaccout",
"addNetwork": "addNetwork",
"notificationView": "notificationview",
"generateNetwork": "generateNetwork",
"helpmenu": "helpMenu",
"updateinfo": "updateinformation",
"intersticielAds": "intersticielAds"
}

View File

@ -38,6 +38,9 @@
"COMMISSION_ACCOUNT_TITLE": "Commission account",
"PRINCIPAL_ACCOUNT_TITLE": "Principal account",
"TRANSFER_TO_PRINCIPAL_ACCOUNT": "Transfer commissions",
"PRINCIPAL": "Principal",
"ENTER_YOUR_CARD_ID": "Please enter your bank card ID",
"SELECT_YOUR_WALLET": "Selec your wallet",
"THE_ACCOUNT": "Account ",
"NO_GEO_POINT_CODE": "You have no free geolocated point",
"NO_DEMAND_ADHESION": "You have no membership request",

View File

@ -38,6 +38,8 @@
"COMMISSION_ACCOUNT_TITLE": "Cpt. commission",
"PRINCIPAL_ACCOUNT_TITLE": "Cpt. principal",
"TRANSFER_TO_PRINCIPAL_ACCOUNT": "Transférer les commissions",
"PRINCIPAL": "Principal",
"ENTER_YOUR_CARD_ID": "Entrer vos identifiants bancaires",
"THE_ACCOUNT": "Le compte ",
"NO_GEO_POINT_CODE": "Vous n'avez aucun point geolocalisé libre",
"NO_DEMAND_ADHESION": "Vous n'avez aucune demande d'adhesion",
@ -161,6 +163,7 @@
"SEND": "Envoyer !",
"CHANGE_INFORMATION": "Modifier mes informations",
"VALIDATE": "Valider",
"SELECT_YOUR_WALLET": "Selectionner un wallet",
"CONNECT": "Connexion",
"TEXT_BIG_CREATE_1": "Inscrivez vous en tant qu'Utilisateur",
"TEXT_SUBTITLE_CREATE_1": "Renseignez vos informations personnelles",

View File

@ -0,0 +1,74 @@
import React from "react";
import { TouchableOpacity, StyleSheet, ActivityIndicator } from "react-native";
import { Color } from '../../config/Color';
import PropTypes from "prop-types";
import CustomText from "../CustomText";
import styles from "./styles";
export default function CustomButton(props) {
const {
style,
styleCustomText,
icon,
outline,
full,
round,
loading,
children,
...rest
} = props;
return (
<TouchableOpacity
{...rest}
style={StyleSheet.flatten([
[styles.default, { backgroundColor: Color.primaryColor }],
outline && [
styles.outline,
{ backgroundColor: Color.cardBackgroundColor, borderColor: Color.primaryColor }
],
full && styles.full,
round && styles.round,
style
])}
activeOpacity={0.9}
>
{icon ? icon : null}
<CustomText
style={StyleSheet.flatten([
styles.textDefault,
outline && { color: Color.primaryColor },
styleCustomText
])}
numberOfLines={1}
>
{children || "CustomButton"}
</CustomText>
{loading ? (
<ActivityIndicator
size="small"
color={outline ? Color.primaryColor : Color.whiteColor}
style={{ paddingLeft: 5 }}
/>
) : null}
</TouchableOpacity>
);
}
CustomButton.propTypes = {
style: PropTypes.oneOfType([PropTypes.object, PropTypes.array]),
icon: PropTypes.node,
outline: PropTypes.bool,
full: PropTypes.bool,
round: PropTypes.bool,
loading: PropTypes.bool
};
CustomButton.defaultProps = {
style: {},
icon: null,
outline: false,
full: false,
round: false,
loading: false
};

View File

@ -0,0 +1,30 @@
import { StyleSheet } from "react-native";
import { Typography, FontWeight } from "../../config/typography";
import { Color } from '../../config/Color';
export default StyleSheet.create({
default: {
height: 56,
borderRadius: 8,
flexDirection: "row",
justifyContent: "center",
alignItems: "center",
paddingHorizontal: 20
},
textDefault: {
...Typography.headline,
color: Color.whiteColor,
fontWeight: FontWeight.semibold
},
outline: {
borderWidth: 1
},
full: {
width: "100%",
alignSelf: "auto"
},
round: {
borderRadius: 28
}
});

View File

@ -9,12 +9,15 @@
"release-build": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/build/intermediates/res/merged/release/ && rm -rf android/app/src/main/res/drawable-* && rm -rf android/app/src/main/res/raw/* && cd android && ./gradlew assembleRelease && cd .. && adb install android/app/build/outputs/apk/release/app-release.apk",
"debug-build": "react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/ && cd android && ./gradlew assembleDebug && cd .. && adb install android/app/build/outputs/apk/debug/app-debug.apk",
"start-emulator": "emulator -avd Nexus_6P_API_29 -dns-server 8.8.8.8",
"start-emulator-pixel": "emulator -avd Pixel_2_API_29_1 -dns-server 8.8.8.8",
"run-debug": "cd android && ./gradlew clean && cd .. && react-native run-android",
"run-release": "cd android && ./gradlew clean && cd .. && react-native run-android --variant=release"
},
"dependencies": {
"@react-native-community/async-storage": "^1.9.0",
"@react-native-community/viewpager": "^3.3.0",
"apsl-react-native-button": "^3.1.1",
"axios": "^0.19.2",
"events": "^3.0.0",
"geolib": "^3.0.3",
"lottie-ios": "3.1.3",
@ -31,6 +34,7 @@
"react-native-calendario": "^0.2.10",
"react-native-cardview": "^2.0.2",
"react-native-copilot": "^2.4.3",
"react-native-credit-card-input": "^0.4.1",
"react-native-db-models": "^0.1.3",
"react-native-device-info": "^2.1.1",
"react-native-elements": "^1.1.0",
@ -66,8 +70,13 @@
"react-native-vector-icons": "^6.5.0",
"react-navigation": "^3.11.0",
"react-navigation-material-bottom-tabs": "^1.0.0",
"react-redux": "^7.2.0",
"realm": "^3.6.5",
"reanimated-bottom-sheet": "^1.0.0-alpha.10"
"reanimated-bottom-sheet": "^1.0.0-alpha.10",
"redux": "^4.0.5",
"redux-persist": "^6.0.0",
"redux-thunk": "^2.3.0",
"slugify": "^1.4.0"
},
"devDependencies": {
"@babel/core": "^7.4.5",

View File

@ -0,0 +1,16 @@
import { WALLET_LIST_PENDING, WALLET_LIST_SUCCESS, WALLET_LIST_ERROR } from "../types/WalletType";
export const fetchWalletListPending = () => ({
type: WALLET_LIST_PENDING
});
export const fetchWalletListSuccess = (res) => ({
type: WALLET_LIST_SUCCESS,
result: res,
});
export const fetchWalletListError = (error) => ({
type: WALLET_LIST_ERROR,
result: error
});

View File

@ -0,0 +1,29 @@
import { WALLET_LIST_PENDING, WALLET_LIST_SUCCESS, WALLET_LIST_ERROR } from "../types/WalletType";
const initialState = {
loading: false,
result: null,
error: null,
};
export const walletReducer = (state = initialState, action) => {
switch (action.type) {
case WALLET_LIST_PENDING: return {
...state,
loading: true
}
case WALLET_LIST_SUCCESS: return {
...state,
loading: true,
result: action.result,
error: null
}
case WALLET_LIST_ERROR: return {
...state,
loading: false,
result: action.result,
error: action.result.statusText,
}
}
};

8
redux/reducers/index.js Normal file
View File

@ -0,0 +1,8 @@
import { combineReducers } from "redux";
import { walletReducer } from "./WalletReducer";
const rootReducer = combineReducers({
walletReducer: walletReducer
});
export default rootReducer;

21
redux/store.js Normal file
View File

@ -0,0 +1,21 @@
import { AsyncStorage } from "react-native";
import { persistReducer, persistStore } from "redux-persist";
import { createStore, applyMiddleware } from "redux";
import thunk from 'redux-thunk';
import rootReducer from "./reducers";
const persistConfig = {
key: 'root',
storage: AsyncStorage,
whitelist: [],
blacklist: []
};
const persistedReducer = persistReducer(persistConfig, rootReducer);
const middlewares = [thunk];
const store = createStore(persistedReducer, applyMiddleware(...middlewares));
let persistor = persistStore(store);
export { store, persistor };

View File

@ -0,0 +1,3 @@
export const WALLET_LIST_PENDING = 'WALLET_LIST_PENDING';
export const WALLET_LIST_SUCCESS = 'WALLET_LIST_SUCCESS';
export const WALLET_LIST_ERROR = 'WALLET_LIST_ERROR';

View File

@ -1,31 +1,31 @@
{
"discover":"ILink",
"stackRoot":"stackcenter",
"historiques":"Historique",
"options":"menu",
"drawer":"drawer",
"credrequester":"creditrequest",
"login":"Login",
"first":"Home",
"typeaccountcreate":"typeaccountcreate",
"simpleusercreate":"simpleusercreate",
"splashscreen":"spashscreen",
"useraccount":"useraccount",
"configurations":"configuration",
"notification":"notification",
"modalhistoryfilter":"filterhistory",
"superviseurgroup":"superviseurgroup",
"historyItemDetails":"historyItemDetails",
"forgotpass":"forgottenpass",
"confirmcode":"confirmcode",
"creationstep2":"step2",
"help":"help",
"modaloading":"modaloading",
"activateaccount":"activateaccout",
"addNetwork":"addNetwork",
"notificationView":"notificationview",
"generateNetwork":"generateNetwork",
"helpmenu":"helpMenu",
"updateinfo":"updateinformation",
"intersticielAds":"intersticielAds"
"discover": "ILink",
"stackRoot": "stackcenter",
"historiques": "Historique",
"options": "menu",
"drawer": "drawer",
"credrequester": "creditrequest",
"login": "Login",
"first": "Home",
"typeaccountcreate": "typeaccountcreate",
"simpleusercreate": "simpleusercreate",
"splashscreen": "spashscreen",
"useraccount": "useraccount",
"configurations": "configuration",
"notification": "notification",
"modalhistoryfilter": "filterhistory",
"superviseurgroup": "superviseurgroup",
"historyItemDetails": "historyItemDetails",
"forgotpass": "forgottenpass",
"confirmcode": "confirmcode",
"creationstep2": "step2",
"help": "help",
"modaloading": "modaloading",
"activateaccount": "activateaccout",
"addNetwork": "addNetwork",
"notificationView": "notificationview",
"generateNetwork": "generateNetwork",
"helpmenu": "helpMenu",
"updateinfo": "updateinformation",
"intersticielAds": "intersticielAds"
}

View File

@ -19,7 +19,15 @@ const height = responsiveHeight(100) - 250;
var Fabric = require('react-native-fabric');
var { Crashlytics } = Fabric;*/
export default class UserAccount extends Component {
static navigatorStyle = {
navBarHidden: false,
navBarBackgroundColor: theme.primaryDark,
navBarTextColor: 'white',
navBarButtonColor: 'white',
drawUnderStatusBar: false,
statusBarColor: theme.primaryDarkAdvanced,
statusBarTextColorScheme: 'light',
};
static navigationOptions = ({ navigation }) => {
return {
headerTitle: I18n.t('USER_ACCOUNT'),

View File

@ -40,6 +40,7 @@ import { withNavigationFocus } from "react-navigation";
import IconWithBadge from "../IconWithBadge";
import { Appbar, Paragraph, Menu, Divider, Provider } from 'react-native-paper';
class MyHistory extends React.Component {
static navigatorStyle = {
navBarBackgroundColor: primary,
statusBarColor: primaryDark,

View File

@ -1419,17 +1419,6 @@ class Home extends BaseScreen {
}
this.setState({ myPosition });
this.refocusMap(false);
/*
this.mapRef.animateCamera({
center: {
latitude: myPosition.latitude,
longitude: myPosition.longitude
},
pitch: 0,
heading: 0,
altitude: 5,
zoom: 12
}, 1000); */
if (user.category) {
this.setState({ loadingDialog: false })

View File

@ -211,7 +211,7 @@ export default class OptionsMenu extends Component {
, { title: I18n.t('CONFIGURATIONS'), id: 4, icon: 'md-settings', active: false }]
}
_renderItem = (item) => {
if (item === "creditrequest" || item === 'historyItemDetails' || item === 'filter' || item === 'networks') {
if (item === "creditrequest" || item === 'historyItemDetails' || item === 'filter' || item === 'networks' || item === 'walletDetail') {
return null
} else {
const color = this.state.currentId === item.id ? theme.accent : "grey"
@ -403,7 +403,7 @@ export default class OptionsMenu extends Component {
break
case 'useraccount': icon = I18n.t('MY_ACCOUNT')
break
case 'wallet': icon = I18n.t('WALLET')
case 'walletSelect': icon = I18n.t('WALLET')
break
case 'Historique': icon = I18n.t('CREDIT_MANAGE')
break
@ -428,7 +428,7 @@ export default class OptionsMenu extends Component {
break
case 'useraccount': icon = "md-person"
break
case 'wallet': icon = "md-wallet"
case 'walletSelect': icon = "md-wallet"
break
case 'Historique': icon = "md-card"
break

View File

@ -1,75 +1,48 @@
import React, { Component } from 'react';
import { Animated, StyleSheet, View, Image, StatusBar, ScrollView, TouchableOpacity, Alert } from 'react-native';
let theme = require('./../../utils/theme.json');
import { Animated, StyleSheet, View, Image, StatusBar, ScrollView, TouchableOpacity } from 'react-native';
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
const route = require('./../../route.json')
import I18n from 'react-native-i18n'
import { IlinkEmitter } from "../../utils/events";
import { TabView, TabBar, SceneMap } from 'react-native-tab-view';
import * as Utils from '../../utils/DeviceUtils';
import { SafeAreaView } from 'react-navigation';
import { Images } from '../../config/Images';
import CustomText from '../../components/CustomText';
import CustomButton from '../../components/CustomButton';
import { Color } from '../../config/Color';
import Tag from '../../components/Tag';
import { SafeAreaView } from 'react-navigation';
import { IlinkEmitter } from "../../utils/events";
import { CreditCardInput } from "react-native-credit-card-input";
require('./../../utils/Translations');
require('../../utils/Translations');
const fakeData = [
{
name: 'UBA',
logo: ''
},
{
name: 'SmallWolrd',
logo: ''
},
{
name: 'Wafa Cash',
logo: ''
},
{
name: 'Orange Money',
logo: ''
},
{
name: 'Mtn Mobile Money',
logo: ''
},
{
name: 'Ria',
logo: ''
},
]
const FirstRoute = () => (
<View style={[styles.container, { padding: 20 }]} >
{
fakeData.map((item) => (
<TouchableOpacity
style={[
styles.profileItem,
{ borderBottomColor: Color.dividerColor, borderBottomWidth: 1 },
]}
onPress={() => {
}}>
<CustomText body1>{item.name}</CustomText>
<Icon
name="chevron-right"
size={20}
color={Color.primaryColor}
style={{ marginLeft: 5 }}
enableRTL={true}
/>
</TouchableOpacity>
))
}
<ScrollView style={[styles.container, { padding: 20 }]}>
<View style={{ flex: 1 }}>
<View style={[styles.checkDefault, { borderBottomColor: Color.borderColor }]}>
<CustomText body2>
{I18n.t('ENTER_YOUR_CARD_ID')}
</CustomText>
</View>
</View>
<View style={{ marginTop: 10 }}>
<CreditCardInput />
</View>
<View style={{ margin: 20 }}>
<CustomButton outline onPress={() => { console.log('click') }}>
{I18n.t('VALIDATE')}
</CustomButton>
</View>
</ScrollView>
);
const SecondRoute = () => (
<View style={[styles.container, { padding: 20 }]}>
<ScrollView style={[styles.container, { padding: 20 }]}>
</View>
</ScrollView>
);
export default class WalletDetail extends Component {
@ -84,8 +57,56 @@ export default class WalletDetail extends Component {
]
};
this.scrollY = new Animated.Value(0);
IlinkEmitter.on("langueChange", this.updateLangue.bind(this));
}
static options(passProps) {
return {
topBar: {
drawBehind: false,
visible: true,
animate: true,
buttonColor: 'white',
background: {
color: 'white',
},
rightButtons: []
},
backButton: {
visible: true,
color: "white"
},
buttonColor: "white",
background: {
color: Color.primaryDarkColor
},
statusBar: {
drawBehind: false,
visible: true,
}
};
}
static navigationOptions = ({ navigation }) => {
return {
headerTitle: I18n.t('WALLET'),
headerStyle: {
backgroundColor: Color.primaryColor,
paddingTop: 10
},
headerTitleStyle: {
color: "white"
}
}
};
updateLangue() {
this.props.navigation.setParams({ name: I18n.t('WALLET') })
this.forceUpdate()
}
handleIndexChange = index => this.setState({ index });
imageScale = () => {
@ -142,6 +163,13 @@ export default class WalletDetail extends Component {
render() {
const { index, routes } = this.state;
return (
<SafeAreaView forceInset={{ top: 'always' }} style={styles.container}>
<StatusBar
backgroundColor={Color.primaryDarkColor}
barStyle="light-content"
translucent={false}
/>
<ScrollView style={{
flex: 1
@ -210,6 +238,7 @@ export default class WalletDetail extends Component {
renderTabBar={this.renderTabBar}
/>
</ScrollView>
</SafeAreaView>
);
}
}
@ -217,7 +246,7 @@ export default class WalletDetail extends Component {
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: theme.containerBackground
backgroundColor: Color.containerBackgroundColor
},
indicator: {
height: 2
@ -249,5 +278,13 @@ const styles = StyleSheet.create({
alignItems: "center",
paddingBottom: 20,
paddingTop: 20
},
checkDefault: {
flexDirection: "row",
justifyContent: "space-between",
alignItems: "center",
borderBottomWidth: 1,
paddingVertical: 15,
marginTop: 10
}
})

View File

@ -0,0 +1,229 @@
import React, { Component } from 'react';
import { StyleSheet, View, Image, StatusBar, ScrollView, TouchableOpacity } from 'react-native';
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
const route = require('./../../route.json');
let slugify = require('slugify');
import I18n from 'react-native-i18n'
import * as Utils from '../../utils/DeviceUtils';
import { Images } from '../../config/Images';
import CustomText from '../../components/CustomText';
import { Color } from '../../config/Color';
import { SafeAreaView } from 'react-navigation';
import { baseUrl } from '../../webservice/IlinkConstants';
import { IlinkEmitter } from "../../utils/events";
import { Provider, Appbar } from 'react-native-paper';
const card = [
{
id: "12",
name: "Canal +",
countryId: "78"
},
{
id: "14",
name: "Airtel Money",
countryId: "78"
},
{
id: "17",
name: "SEEG",
countryId: "78"
},
{
id: "19",
name: "Juba",
countryId: "78"
},
{
id: "77",
name: "Mobicash",
countryId: "78"
},
{
id: "82",
name: "Western Union",
countryId: "78"
},
{
id: "95",
name: "MoneyGram",
countryId: "78"
},
{
id: "100",
name: "Express Union",
countryId: "78"
},
{
id: "109",
name: "Money Express",
countryId: "78"
},
{
id: "118",
name: "UBA",
countryId: "78"
},
{
id: "135",
name: "Small World",
countryId: "78"
},
{
id: "158",
name: "Wari",
countryId: "78"
},
{
id: "171",
name: "Ria",
countryId: "78"
},
{
id: "184",
name: "Sigue",
countryId: "78"
},
{
id: "197",
name: "Ecobank",
countryId: "78"
},
{
id: "209",
name: "DHL",
countryId: "78"
},
{
id: "220",
name: "OraBank",
countryId: "78"
},
{
id: "223",
name: "Satcon",
countryId: "78"
},
{
id: "235",
name: "FINAM ",
countryId: "78"
},
{
id: "237",
name: "UBA fs ilink",
countryId: "78"
}
];
export default class WalletSelect extends Component {
constructor(props) {
super(props);
this.state = {
loading: true
}
slugify.extend({ '+': 'plus' });
IlinkEmitter.on("langueChange", this.updateLangue.bind(this));
}
static navigationOptions = ({ navigation }) => ({
header: null,
headerMode: 'none',
headerTitle: null,
activeColor: '#f0edf6',
inactiveColor: '#3e2465',
barStyle: { backgroundColor: '#694fad' },
drawerLabel: I18n.t('CREDIT_MANAGE'),
drawerIcon: ({ tintColor }) => (
<Icon
name={'credit-card'}
size={24}
/>)
});
updateLangue() {
this.props.navigation.setParams({ name: I18n.t('WALLET') })
this.forceUpdate()
}
render() {
return (
<Provider>
<View style={{ flex: 1 }}>
<StatusBar
backgroundColor={Color.primaryDarkColor}
barStyle="light-content"
translucent={false}
/>
<Appbar.Header dark={true} style={{ backgroundColor: Color.primaryColor }}>
<Appbar.BackAction
onPress={() => { this.props.navigation.pop() }}
/>
<Appbar.Content
title={I18n.t('WALLET')}
subtitle={I18n.t('SELECT_YOUR_WALLET')}
/>
</Appbar.Header>
<ScrollView style={{ flex: 1, padding: 20 }}>
{
card.map((item, index) => {
let icon = `${baseUrl}/datas/img/network/${slugify(item.name, { lower: true })}-logo.png`;
console.log(icon);
return (
<TouchableOpacity
key={item.id}
style={[styles.paymentItem, { borderBottomColor: Color.borderColor }]}
onPress={() => this.props.navigation.push('walletDetail')}>
<View style={{ flexDirection: 'row', alignItems: 'center' }}>
<View style={styles.iconContent}>
<Image style={{ width: 48, height: 48 }} source={{ uri: icon }} />
</View>
<View>
<CustomText body1>{item.name}</CustomText>
<CustomText footnote grayColor style={{ marginTop: 5 }}>
Pays: Gabon
</CustomText>
</View>
</View>
{item.primary ? (
<CustomText footnote primaryColor>
{I18n.t('PRINCIPAL')}
</CustomText>
) : null}
</TouchableOpacity>
)
})
}
</ScrollView>
</View>
</Provider>
);
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: Color.containerBackgroundColor,
},
paymentItem: {
flexDirection: "row",
alignItems: "center",
justifyContent: "space-between",
borderBottomWidth: 1,
paddingVertical: 5,
width: "100%",
marginBottom: 15
},
iconContent: {
width: 60,
marginRight: 10,
alignItems: "center"
}
});

View File

@ -1,95 +0,0 @@
import React, { Component } from 'react';
import { Animated, StyleSheet, View, Image, StatusBar, ScrollView, TouchableOpacity, Alert } from 'react-native';
let theme = require('./../../utils/theme.json');
import Icon from 'react-native-vector-icons/MaterialCommunityIcons';
const route = require('./../../route.json')
import I18n from 'react-native-i18n'
import { IlinkEmitter } from "../../utils/events";
import { TabView, TabBar, SceneMap } from 'react-native-tab-view';
import * as Utils from '../../utils/DeviceUtils';
import { SafeAreaView } from 'react-navigation';
import { Images } from '../../config/Images';
import CustomText from '../../components/CustomText';
import { Color } from '../../config/Color';
import Tag from '../../components/Tag';
import WalletDetail from './WalletDetail';
require('./../../utils/Translations');
export default class Wallet extends Component {
constructor(props) {
super(props);
IlinkEmitter.on("langueChange", this.updateLangue.bind(this));
}
static options(passProps) {
return {
topBar: {
drawBehind: false,
visible: true,
animate: true,
buttonColor: 'white',
background: {
color: 'white',
},
rightButtons: []
},
backButton: {
visible: true,
color: "white"
},
buttonColor: "white",
background: {
color: Color.primaryDarkColor
},
statusBar: {
drawBehind: false,
visible: true,
}
};
}
static navigationOptions = ({ navigation }) => {
return {
headerTitle: I18n.t('WALLET'),
headerStyle: {
backgroundColor: theme.primary,
paddingTop: 10
},
headerTitleStyle: {
color: "white"
}
}
};
updateLangue() {
this.props.navigation.setParams({ name: I18n.t('WALLET') })
this.forceUpdate()
}
render() {
return (
<SafeAreaView forceInset={{ top: 'always' }} style={styles.container}>
<StatusBar
backgroundColor={Color.primaryDarkColor}
barStyle="light-content"
translucent={false}
/>
<WalletDetail />
</SafeAreaView>
)
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
backgroundColor: theme.containerBackground
},
})

View File

@ -38,6 +38,9 @@
"COMMISSION_ACCOUNT_TITLE": "Commission account",
"PRINCIPAL_ACCOUNT_TITLE": "Principal account",
"TRANSFER_TO_PRINCIPAL_ACCOUNT": "Transfer commissions",
"PRINCIPAL": "Principal",
"ENTER_YOUR_CARD_ID": "Please enter your bank card ID",
"SELECT_YOUR_WALLET": "Selec your wallet",
"THE_ACCOUNT": "Account ",
"NO_GEO_POINT_CODE": "You have no free geolocated point",
"NO_DEMAND_ADHESION": "You have no membership request",

View File

@ -38,6 +38,8 @@
"COMMISSION_ACCOUNT_TITLE": "Cpt. commission",
"PRINCIPAL_ACCOUNT_TITLE": "Cpt. principal",
"TRANSFER_TO_PRINCIPAL_ACCOUNT": "Transférer les commissions",
"PRINCIPAL": "Principal",
"ENTER_YOUR_CARD_ID": "Entrer vos identifiants bancaires",
"THE_ACCOUNT": "Le compte ",
"NO_GEO_POINT_CODE": "Vous n'avez aucun point geolocalisé libre",
"NO_DEMAND_ADHESION": "Vous n'avez aucune demande d'adhesion",
@ -161,6 +163,7 @@
"SEND": "Envoyer !",
"CHANGE_INFORMATION": "Modifier mes informations",
"VALIDATE": "Valider",
"SELECT_YOUR_WALLET": "Selectionner un wallet",
"CONNECT": "Connexion",
"TEXT_BIG_CREATE_1": "Inscrivez vous en tant qu'Utilisateur",
"TEXT_SUBTITLE_CREATE_1": "Renseignez vos informations personnelles",

View File

@ -2,8 +2,8 @@ export const isDebugMode = false
//base url test
//const baseUrl = "https://ilink-app.com/mobilebackendbeta"
//base url production
const baseUrl = "https://ilink-app.com/mobilebackend"
export const baseUrl = "https://ilink-app.com/mobilebackend";
export const testBaseUrl = "https://test.ilink-app.com";
//base url agent
//const baseUrl = "https://ilink-app.com/mobilebackendtest2"
@ -16,5 +16,6 @@ export const networkActionUrl = baseUrl + '/interacted/NetworkAction.php';
export const locationActionUrl = baseUrl + '/interacted/LocationAction.php';
export const demandeActionUrl = baseUrl + '/interacted/DemandeAction.php';
export const configActionUrl = baseUrl + '/interacted/ConfigAction.php'
export const walletActionUrl = testBaseUrl + '/walletService/wallets/'
export const videoUrl = "https://www.youtube.com/watch?v=wwGPDPsSLWY"
export const MARKER_URL = baseUrl + "/interacted/LocationAction.php"

View File

149
yarn.lock
View File

@ -624,6 +624,13 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.5.5":
version "7.9.2"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.0.0", "@babel/template@^7.4.0", "@babel/template@^7.8.3", "@babel/template@^7.8.6":
version "7.8.6"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b"
@ -873,6 +880,13 @@
"@types/yargs" "^15.0.0"
chalk "^3.0.0"
"@react-native-community/async-storage@^1.9.0":
version "1.9.0"
resolved "https://registry.yarnpkg.com/@react-native-community/async-storage/-/async-storage-1.9.0.tgz#af26a8879bd2987970fbbe81a9623851d29a56f1"
integrity sha512-TlGMr02JcmY4huH1P7Mt7p6wJecosPpW+09+CwCFLn875IhpRqU2XiVA+BQppZOYfQdHUfUzIKyCBeXOlCEbEg==
dependencies:
deep-assign "^3.0.0"
"@react-native-community/cli-debugger-ui@^3.0.0":
version "3.0.0"
resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-3.0.0.tgz#d01d08d1e5ddc1633d82c7d84d48fff07bd39416"
@ -1448,6 +1462,13 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e"
integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==
axios@^0.19.2:
version "0.19.2"
resolved "https://registry.yarnpkg.com/axios/-/axios-0.19.2.tgz#3ea36c5d8818d0d5f8a8a97a6d36b86cdc00cb27"
integrity sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==
dependencies:
follow-redirects "1.5.10"
babel-code-frame@^6.26.0:
version "6.26.0"
resolved "https://registry.yarnpkg.com/babel-code-frame/-/babel-code-frame-6.26.0.tgz#63fd43f7dc1e3bb7ce35947db8fe369a3f58c74b"
@ -2223,6 +2244,14 @@ capture-exit@^2.0.0:
dependencies:
rsvp "^4.8.4"
card-validator@^3.0.0:
version "3.0.1"
resolved "https://registry.yarnpkg.com/card-validator/-/card-validator-3.0.1.tgz#dcc2fabd6a1cd21f361b2536423a72de99a0894f"
integrity sha1-3ML6vWoc0h82GyU2Qjpy3pmgiU8=
dependencies:
credit-card-type "^5.0.0"
lodash "3.10.1"
caseless@~0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.11.0.tgz#715b96ea9841593cc33067923f5ec60ebda4f7d7"
@ -2582,6 +2611,11 @@ create-react-context@^0.2.1, create-react-context@^0.2.3:
fbjs "^0.8.0"
gud "^1.0.0"
credit-card-type@^5.0.0:
version "5.0.4"
resolved "https://registry.yarnpkg.com/credit-card-type/-/credit-card-type-5.0.4.tgz#2dd9df280411ce2bb91ed95ac31e814605717aed"
integrity sha1-LdnfKAQRziu5Htlawx6BRgVxeu0=
cross-spawn@^5.0.1, cross-spawn@^5.1.0:
version "5.1.0"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449"
@ -2675,6 +2709,13 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8:
dependencies:
ms "2.0.0"
debug@=3.1.0:
version "3.1.0"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261"
integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==
dependencies:
ms "2.0.0"
debug@^3.1.0, debug@^3.2.6:
version "3.2.6"
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
@ -2757,6 +2798,13 @@ dedent@^0.6.0:
resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.6.0.tgz#0e6da8f0ce52838ef5cec5c8f9396b0c1b64a3cb"
integrity sha1-Dm2o8M5Sg471zsXI+TlrDBtko8s=
deep-assign@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/deep-assign/-/deep-assign-3.0.0.tgz#c8e4c4d401cba25550a2f0f486a2e75bc5f219a2"
integrity sha512-YX2i9XjJ7h5q/aQ/IM9PEwEnDqETAIYbggmdDB3HLTlSgo1CxPsj6pvhPG68rq6SVE0+p+6Ywsm5fTYNrYtBWw==
dependencies:
is-obj "^1.0.0"
deep-extend@^0.6.0:
version "0.6.0"
resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac"
@ -3391,6 +3439,13 @@ flow-copy-source@^1.3.0:
kefir "^3.7.3"
yargs "^11.0.0"
follow-redirects@1.5.10:
version "1.5.10"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==
dependencies:
debug "=3.1.0"
for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
@ -4031,6 +4086,11 @@ is-number@^3.0.0:
dependencies:
kind-of "^3.0.2"
is-obj@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f"
integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8=
is-plain-object@^2.0.3, is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
@ -4777,11 +4837,26 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
lodash.compact@^3.0.1:
version "3.0.1"
resolved "https://registry.yarnpkg.com/lodash.compact/-/lodash.compact-3.0.1.tgz#540ce3837745975807471e16b4a2ba21e7256ca5"
integrity sha1-VAzjg3dFl1gHRx4WtKK6IeclbKU=
lodash.every@^4.6.0:
version "4.6.0"
resolved "https://registry.yarnpkg.com/lodash.every/-/lodash.every-4.6.0.tgz#eb89984bebc4364279bb3aefbbd1ca19bfa6c6a7"
integrity sha1-64mYS+vENkJ5uzrvu9HKGb+mxqc=
lodash.isequal@^4.1.4, lodash.isequal@^4.5.0:
version "4.5.0"
resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA=
lodash.pick@^4.4.0:
version "4.4.0"
resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3"
integrity sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=
lodash.sortby@^4.7.0:
version "4.7.0"
resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438"
@ -4792,6 +4867,16 @@ lodash.throttle@^4.1.1:
resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4"
integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=
lodash.values@^4.3.0:
version "4.3.0"
resolved "https://registry.yarnpkg.com/lodash.values/-/lodash.values-4.3.0.tgz#a3a6c2b0ebecc5c2cba1c17e6e620fe81b53d347"
integrity sha1-o6bCsOvsxcLLocF+bmIP6BtT00c=
lodash@3.10.1:
version "3.10.1"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6"
integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y=
lodash@^4.0.0, lodash@^4.17.11, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.4, lodash@^4.17.5, lodash@^4.3.0, lodash@^4.6.1:
version "4.17.15"
resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548"
@ -6119,6 +6204,11 @@ react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.3, react-i
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.0.tgz#0f37c3613c34fe6b37cd7f763a0d6293ab15c527"
integrity sha512-GFMtL0vHkiBv9HluwNZTggSn/sCyEt9n02aM0dSAjGGyqyNlAyftYm4phPxdvCigG15JreC5biwxCgTAJZ7yAA==
react-is@^16.9.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-lifecycles-compat@^3.0.4:
version "3.0.4"
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
@ -6188,6 +6278,19 @@ react-native-copilot@^2.4.3:
hoist-non-react-statics "^3.0.1"
mitt "^1.1.3"
react-native-credit-card-input@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/react-native-credit-card-input/-/react-native-credit-card-input-0.4.1.tgz#e62dd1a9beeab6787e5373ba23b93831cbf5f3de"
integrity sha1-5i3Rqb7qtnh+U3O6I7k4Mcv1894=
dependencies:
card-validator "^3.0.0"
lodash.compact "^3.0.1"
lodash.every "^4.6.0"
lodash.pick "^4.4.0"
lodash.values "^4.3.0"
prop-types "^15.6.0"
react-native-flip-card "^3.4.1"
react-native-db-models@^0.1.3:
version "0.1.3"
resolved "https://registry.yarnpkg.com/react-native-db-models/-/react-native-db-models-0.1.3.tgz#be4a9f54d711afb46b3ff1c502d62de3154d1a64"
@ -6216,6 +6319,13 @@ react-native-elements@^1.1.0:
react-native-ratings "^6.3.0"
react-native-status-bar-height "^2.2.0"
react-native-flip-card@^3.4.1:
version "3.5.5"
resolved "https://registry.yarnpkg.com/react-native-flip-card/-/react-native-flip-card-3.5.5.tgz#14f13d5178660e5365e7be4ed8dbb6ff289dd1e8"
integrity sha512-7PCMfsQ/7K8oN0NVusYNgK4sanY7KLimnPVj5TadkQaSm0zEi7/Jy/rHfnNQQibNBImov6zzQkmcP8ch6RN5Yw==
dependencies:
prop-types "^15.5.10"
react-native-geolocation-service@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/react-native-geolocation-service/-/react-native-geolocation-service-4.0.0.tgz#257187ea08965dac16016edd383454d310eb7809"
@ -6597,6 +6707,17 @@ react-proxy@^1.1.7:
lodash "^4.6.1"
react-deep-force-update "^1.0.0"
react-redux@^7.2.0:
version "7.2.0"
resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.0.tgz#f970f62192b3981642fec46fd0db18a074fe879d"
integrity sha512-EvCAZYGfOLqwV7gh849xy9/pt55rJXPwmYvI4lilPM5rUT/1NxuuN59ipdBksRVSvz0KInbPnp4IfoXJXCqiDA==
dependencies:
"@babel/runtime" "^7.5.5"
hoist-non-react-statics "^3.3.0"
loose-envify "^1.4.0"
prop-types "^15.7.2"
react-is "^16.9.0"
react-refresh@^0.4.0:
version "0.4.2"
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334"
@ -6728,6 +6849,24 @@ reanimated-bottom-sheet@^1.0.0-alpha.10:
resolved "https://registry.yarnpkg.com/reanimated-bottom-sheet/-/reanimated-bottom-sheet-1.0.0-alpha.19.tgz#94ea79e7b2896b8f489547415d15d15c99ac44ba"
integrity sha512-Q0sGUHYdr5h2n/AY7pKQty35zcUAxxYM1nCl+luSQAyqiY6a5Kf8IBQRsOVvs60sDzqXxtbwxHgM5mkwaiQC4Q==
redux-persist@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/redux-persist/-/redux-persist-6.0.0.tgz#b4d2972f9859597c130d40d4b146fecdab51b3a8"
integrity sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==
redux-thunk@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/redux-thunk/-/redux-thunk-2.3.0.tgz#51c2c19a185ed5187aaa9a2d08b666d0d6467622"
integrity sha512-km6dclyFnmcvxhAcrQV2AkZmPQjzPDjgVlQtR0EQjxZPyJ0BnMf3in1ryuR8A2qU0HldVRfxYXbFSKlI3N7Slw==
redux@^4.0.5:
version "4.0.5"
resolved "https://registry.yarnpkg.com/redux/-/redux-4.0.5.tgz#4db5de5816e17891de8a80c424232d06f051d93f"
integrity sha512-VSz1uMAH24DM6MF72vcojpYPtrTUu3ByVWfPL1nPfVRb5mZVTve5GnNCUV53QM/BZ66xfWrm0CTWoM+Xlz8V1w==
dependencies:
loose-envify "^1.4.0"
symbol-observable "^1.2.0"
regenerate-unicode-properties@^8.2.0:
version "8.2.0"
resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz#e5de7111d655e7ba60c057dbe9ff37c87e65cdec"
@ -7203,6 +7342,11 @@ slide@^1.1.5:
resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707"
integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=
slugify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/slugify/-/slugify-1.4.0.tgz#c9557c653c54b0c7f7a8e786ef3431add676d2cb"
integrity sha512-FtLNsMGBSRB/0JOE2A0fxlqjI6fJsgHGS13iTuVT28kViI4JjUiNqp/vyis0ZXYcMnpR3fzGNkv+6vRlI2GwdQ==
snapdragon-node@^2.0.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
@ -7511,6 +7655,11 @@ symbol-observable@1.0.4:
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.0.4.tgz#29bf615d4aa7121bdd898b22d4b3f9bc4e2aa03d"
integrity sha1-Kb9hXUqnEhvdiYsi1LP5vE4qoD0=
symbol-observable@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"
integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==
symbol-tree@^3.2.2:
version "3.2.4"
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"