Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
I
InvestCustomer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Giang Tran
InvestCustomer
Commits
c0a504d5
Commit
c0a504d5
authored
May 06, 2021
by
Giang Tran
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch '05_May' into dev_phase2
parents
8608d3d4
b1275134
Hide whitespace changes
Inline
Side-by-side
Showing
34 changed files
with
772 additions
and
438 deletions
+772
-438
app-release.aab
android/app/release/app-release.aab
+0
-0
AndroidManifest.xml
android/app/src/main/AndroidManifest.xml
+9
-6
colors.xml
android/app/src/main/res/values/colors.xml
+1
-1
project.pbxproj
ios/Invest.xcodeproj/project.pbxproj
+2
-2
AppDelegate.m
ios/Invest/AppDelegate.m
+29
-1
Info.plist
ios/Invest/Info.plist
+1
-1
PacketCQG.js
src/Screens/Account/PacrtCQG/PacketCQG.js
+1
-0
Item.js
src/Screens/Action/History/Item.js
+1
-1
Item.js
src/Screens/Action/Wallet/Tab/Item.js
+1
-1
WalletDeposit.js
src/Screens/Action/Wallet/WalletDeposit.js
+65
-41
WalletWithdraw.js
src/Screens/Action/Wallet/WalletWithdraw.js
+82
-73
Login.js
src/Screens/Authen/Login.js
+4
-3
RegisterOTP.js
src/Screens/Authen/RegisterOTP.js
+241
-0
Registor.js
src/Screens/Authen/Registor.js
+11
-28
Item.js
src/Screens/Exchange/Item.js
+4
-2
Item.js
src/Screens/Menu/Payments/Item.js
+1
-1
CQG.js
src/Screens/Menu/Profile/Tab/CQG.js
+25
-16
Item.js
src/Screens/Menu/Rose/Item.js
+4
-2
Rose.js
src/Screens/Menu/Rose/Rose.js
+0
-6
Item.js
src/Screens/MethodPay/Item.js
+3
-3
ItemBank.js
src/Screens/MethodPay/ItemBank.js
+13
-3
Item.js
src/Screens/Notification/Item.js
+1
-1
Item.js
src/Screens/Transaction/DueDate/Item.js
+1
-2
Item.js
src/Screens/Transaction/Escrow/Item.js
+1
-1
Item.js
src/Screens/Transaction/PriceList/Item.js
+1
-1
Item.js
src/Screens/Transaction/TimeTransaction/Item.js
+1
-2
Drawer.js
src/components/Header/Drawer.js
+9
-9
HeaderDrawer.js
src/components/Header/HeaderDrawer.js
+1
-2
HeaderHome.js
src/components/Header/HeaderHome.js
+10
-9
en.js
src/helper/i18/locales/en.js
+218
-217
vn.js
src/helper/i18/locales/vn.js
+2
-2
ScreenNames.js
src/routers/ScreenNames.js
+1
-0
StackNavigation.js
src/routers/StackNavigation.js
+2
-0
TabNavigation.js
src/routers/TabNavigation.js
+26
-1
No files found.
android/app/release/app-release.aab
0 → 100644
View file @
c0a504d5
File added
android/app/src/main/AndroidManifest.xml
View file @
c0a504d5
...
...
@@ -32,6 +32,14 @@
android:exported=
"true"
android:launchMode=
"singleTask"
android:windowSoftInputMode=
"adjustResize"
>
<intent-filter>
<action
android:name=
"android.intent.action.VIEW"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<category
android:name=
"android.intent.category.BROWSABLE"
/>
<data
android:scheme=
"appdcvinvest"
android:host=
"screen"
android:pathPrefix=
"/"
/>
</intent-filter>
</activity>
<activity
android:name=
"com.zoontek.rnbootsplash.RNBootSplashActivity"
...
...
@@ -43,12 +51,7 @@
</intent-filter>
<intent-filter>
<action
android:name=
"android.intent.action.VIEW"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
<category
android:name=
"android.intent.category.BROWSABLE"
/>
<data
android:scheme=
"dcvinvest"
/>
</intent-filter>
</activity>
...
...
android/app/src/main/res/values/colors.xml
View file @
c0a504d5
<resources>
<color
name=
"bootsplash_background"
>
#1C6AF6
</color>
<color
name=
"white"
>
#
1C6AF6
</color>
<color
name=
"white"
>
#
fff
</color>
</resources>
ios/Invest.xcodeproj/project.pbxproj
View file @
c0a504d5
...
...
@@ -912,7 +912,7 @@
);
INFOPLIST_FILE
=
Invest/Info.plist
;
LD_RUNPATH_SEARCH_PATHS
=
"$(inherited) @executable_path/Frameworks"
;
MARKETING_VERSION
=
1.
6
;
MARKETING_VERSION
=
1.
7
;
OTHER_LDFLAGS
=
(
"$(inherited)"
,
"-ObjC"
,
...
...
@@ -940,7 +940,7 @@
DEVELOPMENT_TEAM
=
MXZ24GRH48
;
INFOPLIST_FILE
=
Invest/Info.plist
;
LD_RUNPATH_SEARCH_PATHS
=
"$(inherited) @executable_path/Frameworks"
;
MARKETING_VERSION
=
1.
6
;
MARKETING_VERSION
=
1.
7
;
OTHER_LDFLAGS
=
(
"$(inherited)"
,
"-ObjC"
,
...
...
ios/Invest/AppDelegate.m
View file @
c0a504d5
...
...
@@ -5,7 +5,7 @@
#import <React/RCTRootView.h>
@import
Firebase
;
#import <React/RCTLinkingManager.h>
#import <AVFoundation/AVFoundation.h>
#import "RNBootSplash.h"
#if DEBUG
...
...
@@ -17,6 +17,7 @@
#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
//#import <CallAppSDK/CallAppInterface.h>
static
void
InitializeFlipper
(
UIApplication
*
application
)
{
FlipperClient
*
client
=
[
FlipperClient
sharedClient
];
SKDescriptorMapper
*
layoutDescriptorMapper
=
[[
SKDescriptorMapper
alloc
]
initWithDefaults
];
...
...
@@ -55,6 +56,33 @@ static void InitializeFlipper(UIApplication *application) {
return
YES
;
}
#import <React/RCTLinkingManager.h>
// - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
// sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
// {
// return [RCTLinkingManager application:application openURL:url
// sourceApplication:sourceApplication annotation:annotation];
// }
-
(
BOOL
)
application
:(
UIApplication
*
)
application
openURL
:(
NSURL
*
)
url
options
:(
NSDictionary
<
UIApplicationOpenURLOptionsKey
,
id
>
*
)
options
{
return
[
RCTLinkingManager
application
:
application
openURL
:
url
options
:
options
];
}
-
(
BOOL
)
application
:(
UIApplication
*
)
application
continueUserActivity
:(
NSUserActivity
*
)
userActivity
restorationHandler
:(
void
(
^
)(
NSArray
*
_Nullable
))
restorationHandler
{
return
[
RCTLinkingManager
application
:
application
continueUserActivity
:
userActivity
restorationHandler:
restorationHandler
];
}
-
(
NSURL
*
)
sourceURLForBridge
:(
RCTBridge
*
)
bridge
{
#if DEBUG
...
...
ios/Invest/Info.plist
View file @
c0a504d5
...
...
@@ -33,7 +33,7 @@
<
string
>
dcv.investcustomer.vn.
linking
<
/string
>
<
k
e
y
>
CFBundleURLSchemes
<
/k
e
y
>
<
a
rr
a
y
>
<
string
>
dcvinvest
<
/string
>
<
string
>
app
dcvinvest
<
/string
>
<
/
a
rr
a
y
>
<
/
d
i
c
t
>
<
/
a
rr
a
y
>
...
...
src/Screens/Account/PacrtCQG/PacketCQG.js
View file @
c0a504d5
...
...
@@ -37,6 +37,7 @@ const PacketCQG = (props) => {
props
.
showLoading
();
const
res
=
await
openCQG
({
packages
:
newList
});
props
.
hideLoading
();
console
.
log
(
res
);
if
(
res
.
data
.
code
==
200
)
{
props
.
saveUserToRedux
(
res
.
data
.
data
);
setTimeout
(()
=>
{
...
...
src/Screens/Action/History/Item.js
View file @
c0a504d5
...
...
@@ -91,7 +91,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txt
:
{
fontSize
:
getFontXD
(
36
),
...
...
src/Screens/Action/Wallet/Tab/Item.js
View file @
c0a504d5
...
...
@@ -81,7 +81,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
42
),
...
...
src/Screens/Action/Wallet/WalletDeposit.js
View file @
c0a504d5
...
...
@@ -6,6 +6,11 @@ import {
Dimensions
,
TouchableOpacity
,
Alert
,
TouchableWithoutFeedback
,
Keyboard
,
KeyboardAvoidingView
,
Platform
,
ScrollView
,
}
from
'react-native'
;
import
R
from
'../../../assets/R'
;
import
HeaderBack
from
'../../../components/Header/HeaderBack'
;
...
...
@@ -32,7 +37,10 @@ const WalletDeposit = (props) => {
const
navigate
=
useNavigation
();
const
onClick
=
async
()
=>
{
const
titles
=
[
I18n
.
t
(
'AmountOfMoney'
).
toLowerCase
(),
I18n
.
t
(
'Note'
).
toLowerCase
()];
const
titles
=
[
I18n
.
t
(
'AmountOfMoney'
).
toLowerCase
(),
I18n
.
t
(
'Note'
).
toLowerCase
(),
];
const
index
=
checkFormatArray
([
amount
,
notes
]);
if
(
index
===
true
)
{
...
...
@@ -63,45 +71,64 @@ const WalletDeposit = (props) => {
}
};
return
(
<
View
style
=
{{
flex
:
1
}}
>
<
HeaderBack
title
=
{
'InvestmentDeposit'
}
/
>
<
View
style
=
{
styles
.
container
}
>
<
View
style
=
{
styles
.
wrapTop
}
>
<
View
style
=
{
styles
.
itemTop
}
>
<
Text
style
=
{
styles
.
txtTitle
}
>
{
I18n
.
t
(
'Wallet'
)}
<
/Text
>
<
Text
style
=
{
styles
.
txtMoney
}
>
{
' '
}
{
props
.
user
.
current_money
!=
0
?
toPriceVnd
(
props
.
user
.
current_money
)
:
0
}{
' '
}
<
/Text
>
<
KeyboardAvoidingView
behavior
=
{
Platform
.
Os
===
'ios'
?
'padding'
:
'height'
}
style
=
{{
flex
:
1
,
backgroundColor
:
'white'
}}
keyboardVerticalOffset
=
{
-
50
}
>
<
TouchableWithoutFeedback
onPress
=
{
Keyboard
.
dismiss
}
>
<
View
style
=
{{
flex
:
1
}}
>
<
HeaderBack
title
=
{
'InvestmentDeposit'
}
/
>
<
ScrollView
showsVerticalScrollIndicator
=
{
false
}
>
<
View
style
=
{
styles
.
container
}
>
<
View
style
=
{
styles
.
wrapTop
}
>
<
View
style
=
{
styles
.
itemTop
}
>
<
Text
style
=
{
styles
.
txtTitle
}
>
{
I18n
.
t
(
'Wallet'
)}
<
/Text
>
<
Text
style
=
{
styles
.
txtMoney
}
>
{
' '
}
{
props
.
user
.
current_money
!=
0
?
toPriceVnd
(
props
.
user
.
current_money
)
:
0
}{
' '
}
<
/Text
>
<
/View
>
<
View
style
=
{{
width
:
1
,
backgroundColor
:
'#DBDBDB'
}}
/
>
<
View
style
=
{
styles
.
itemTop
}
>
<
Text
style
=
{
styles
.
txtTitle
}
>
CQG
<
/Text
>
<
Text
style
=
{
styles
.
txtMoney
}
>
{
' '
}
{
props
.
user
.
current_cqg_money
!=
0
?
toPriceVnd
(
props
.
user
.
current_cqg_money
)
:
0
}{
' '
}
đ
<
/Text
>
<
/View
>
<
/View
>
<
View
style
=
{
styles
.
wrapBody
}
>
{
/* <TextDisable value={'10010101'} title={'Số tài khoản CQG'} /> */
}
<
TextMoney
onChangeText
=
{(
val
)
=>
setAmount
(
val
)}
title
=
{
I18n
.
t
(
'AmountOfMoney'
)}
value
=
{
amount
}
/
>
<
TextMulti
onChangeText
=
{(
val
)
=>
setNotes
(
val
)}
title
=
{
I18n
.
t
(
'Note'
)}
/
>
<
/View
>
<
/View
>
<
/ScrollView
>
<
View
style
=
{{
paddingVertical
:
10
,
justifyContent
:
'center'
,
alignItems
:
'center'
,
}}
>
<
TouchableOpacity
onPress
=
{
onClick
}
style
=
{
styles
.
btnSend
}
>
<
Text
style
=
{
styles
.
txtSend
}
>
{
I18n
.
t
(
'Deposit'
)}
<
/Text
>
<
/TouchableOpacity
>
<
/View
>
<
View
style
=
{{
width
:
1
,
backgroundColor
:
'#DBDBDB'
}}
/
>
<
View
style
=
{
styles
.
itemTop
}
>
<
Text
style
=
{
styles
.
txtTitle
}
>
CQG
<
/Text
>
<
Text
style
=
{
styles
.
txtMoney
}
>
{
' '
}
{
props
.
user
.
current_cqg_money
!=
0
?
toPriceVnd
(
props
.
user
.
current_cqg_money
)
:
0
}{
' '
}
đ
<
/Text
>
<
/View
>
<
/View
>
<
View
style
=
{
styles
.
wrapBody
}
>
{
/* <TextDisable value={'10010101'} title={'Số tài khoản CQG'} /> */
}
<
TextMoney
onChangeText
=
{(
val
)
=>
setAmount
(
val
)}
title
=
{
I18n
.
t
(
'AmountOfMoney'
)}
value
=
{
amount
}
/
>
<
TextMulti
onChangeText
=
{(
val
)
=>
setNotes
(
val
)}
title
=
{
I18n
.
t
(
'Note'
)}
/
>
<
/View
>
<
/View
>
<
TouchableOpacity
onPress
=
{
onClick
}
style
=
{
styles
.
btnSend
}
>
<
Text
style
=
{
styles
.
txtSend
}
>
{
I18n
.
t
(
'Deposit'
)}
<
/Text
>
<
/TouchableOpacity
>
<
/View
>
<
/TouchableWithoutFeedback
>
<
/KeyboardAvoidingView
>
);
};
...
...
@@ -147,9 +174,6 @@ const styles = StyleSheet.create({
fontWeight
:
'bold'
,
},
btnSend
:
{
position
:
'absolute'
,
bottom
:
30
,
right
:
width
/
2
-
70
,
width
:
140
,
height
:
40
,
backgroundColor
:
R
.
colors
.
main
,
...
...
src/Screens/Action/Wallet/WalletWithdraw.js
View file @
c0a504d5
...
...
@@ -10,6 +10,7 @@ import {
TouchableWithoutFeedback
,
Keyboard
,
KeyboardAvoidingView
,
ScrollView
,
}
from
'react-native'
;
import
R
from
'../../../assets/R'
;
import
HeaderBack
from
'../../../components/Header/HeaderBack'
;
...
...
@@ -61,9 +62,8 @@ const WalletWithdraw = (props) => {
});
if
(
res
.
data
.
code
==
200
&&
res
.
data
.
data
)
{
if
(
res
.
data
.
data
.
length
==
0
)
{
confirmAlert
(
I18n
.
t
(
'SettingPaymentMethodConfirm'
),
()
=>
navigate
.
navigate
(
ADDMETHODPAY
),
confirmAlert
(
I18n
.
t
(
'SettingPaymentMethodConfirm'
),
()
=>
navigate
.
navigate
(
ADDMETHODPAY
),
);
}
else
{
const
newList
=
res
.
data
.
data
.
map
((
e
)
=>
{
...
...
@@ -77,7 +77,10 @@ const WalletWithdraw = (props) => {
};
const
onPressWithdraw
=
async
()
=>
{
const
titles
=
[
I18n
.
t
(
'BeneficiaryAccount'
),
I18n
.
t
(
'AmountOfMoney'
).
toLowerCase
()];
const
titles
=
[
I18n
.
t
(
'BeneficiaryAccount'
),
I18n
.
t
(
'AmountOfMoney'
).
toLowerCase
(),
];
const
index
=
checkFormatArray
([
type
,
amount
]);
...
...
@@ -120,78 +123,87 @@ const WalletWithdraw = (props) => {
<
TouchableWithoutFeedback
onPress
=
{
Keyboard
.
dismiss
}
>
<
View
style
=
{{
flex
:
1
}}
>
<
HeaderBack
title
=
{
'Withdraw'
}
/
>
<
View
style
=
{
styles
.
container
}
>
<
View
style
=
{
styles
.
wrapTop
}
>
<
View
style
=
{
styles
.
itemTop
}
>
<
Text
style
=
{
styles
.
txtTitle
}
>
{
I18n
.
t
(
'Wallet'
)}
<
/Text
>
<
Text
style
=
{
styles
.
txtMoney
}
>
{
' '
}
{
props
.
user
.
current_money
!=
0
?
toPriceVnd
(
props
.
user
.
current_money
)
:
0
}{
' '
}
<
/Text
>
<
/View
>
<
ScrollView
showsVerticalScrollIndicator
=
{
false
}
>
<
View
style
=
{
styles
.
container
}
>
<
View
style
=
{
styles
.
wrapTop
}
>
<
View
style
=
{
styles
.
itemTop
}
>
<
Text
style
=
{
styles
.
txtTitle
}
>
{
I18n
.
t
(
'Wallet'
)}
<
/Text
>
<
Text
style
=
{
styles
.
txtMoney
}
>
{
' '
}
{
props
.
user
.
current_money
!=
0
?
toPriceVnd
(
props
.
user
.
current_money
)
:
0
}{
' '
}
<
/Text
>
<
/View
>
<
View
style
=
{{
width
:
1
,
backgroundColor
:
'#DBDBDB'
}}
/
>
<
View
style
=
{{
width
:
1
,
backgroundColor
:
'#DBDBDB'
}}
/
>
<
View
style
=
{
styles
.
itemTop
}
>
<
Text
style
=
{
styles
.
txtTitle
}
>
CQG
<
/Text
>
<
Text
style
=
{
styles
.
txtMoney
}
>
{
props
.
user
.
current_cqg_money
!=
0
?
toPriceVnd
(
props
.
user
.
current_cqg_money
)
:
0
}{
' '
}
đ
<
View
style
=
{
styles
.
itemTop
}
>
<
Text
style
=
{
styles
.
txtTitle
}
>
CQG
<
/Text
>
<
Text
style
=
{
styles
.
txtMoney
}
>
{
props
.
user
.
current_cqg_money
!=
0
?
toPriceVnd
(
props
.
user
.
current_cqg_money
)
:
0
}{
' '
}
đ
<
/Text
>
<
/View
>
<
/View
>
<
View
style
=
{
styles
.
wrapBody
}
>
<
Text
style
=
{{
fontSize
:
getFontXD
(
42
),
color
:
R
.
colors
.
color777
,
}}
>
{
I18n
.
t
(
'SourceAccount'
)}
<
/Text
>
{
/* <View style={styles.row}> */
}
<
RadioForm
radio_props
=
{
radio_props
}
labelStyle
=
{{
fontSize
:
getFontXD
(
42
)}}
formHorizontal
=
{
true
}
style
=
{
styles
.
row
}
initial
=
{
0
}
onPress
=
{(
value
)
=>
{
setSrc
(
value
);
}}
/
>
{
/* </View> */
}
<
Text
style
=
{{
fontSize
:
getFontXD
(
42
),
color
:
R
.
colors
.
color777
,
}}
>
{
I18n
.
t
(
'ChooseBeneficiaryAccount'
)}
<
/Text
>
<
PickerItem
width
=
{
width
-
20
}
data
=
{
data
}
onValueChange
=
{(
value
,
items
)
=>
{
setType
(
items
);
}}
/
>
<
TextMoney
onChangeText
=
{(
val
)
=>
setAmount
(
val
)}
title
=
{
I18n
.
t
(
'AmountOfMoney'
)}
value
=
{
amount
}
/
>
<
TextMulti
onChangeText
=
{(
val
)
=>
setNotes
(
val
)}
title
=
{
I18n
.
t
(
'Note'
)}
/
>
<
/View
>
<
/View
>
<
View
style
=
{
styles
.
wrapBody
}
>
<
Text
style
=
{{
fontSize
:
getFontXD
(
42
),
color
:
R
.
colors
.
color777
,
}}
>
{
I18n
.
t
(
'SourceAccount'
)}
<
/Text
>
{
/* <View style={styles.row}> */
}
<
RadioForm
radio_props
=
{
radio_props
}
labelStyle
=
{{
fontSize
:
getFontXD
(
42
)}}
formHorizontal
=
{
true
}
style
=
{
styles
.
row
}
initial
=
{
0
}
onPress
=
{(
value
)
=>
{
setSrc
(
value
);
}}
/
>
{
/* </View> */
}
<
Text
style
=
{{
fontSize
:
getFontXD
(
42
),
color
:
R
.
colors
.
color777
,
}}
>
{
I18n
.
t
(
'ChooseBeneficiaryAccount'
)}
<
/Text
>
<
PickerItem
width
=
{
width
-
20
}
data
=
{
data
}
onValueChange
=
{(
value
,
items
)
=>
{
setType
(
items
);
}}
/
>
<
TextMoney
onChangeText
=
{(
val
)
=>
setAmount
(
val
)}
title
=
{
I18n
.
t
(
'AmountOfMoney'
)}
value
=
{
amount
}
/
>
<
TextMulti
onChangeText
=
{(
val
)
=>
setNotes
(
val
)}
title
=
{
I18n
.
t
(
'Note'
)}
/
>
<
/View
>
<
/ScrollView
>
<
View
style
=
{{
paddingVertical
:
10
,
justifyContent
:
'center'
,
alignItems
:
'center'
,
}}
>
<
TouchableOpacity
onPress
=
{
onPressWithdraw
}
style
=
{
styles
.
btnSend
}
>
<
Text
style
=
{
styles
.
txtSend
}
>
{
I18n
.
t
(
'Withdraw'
)}
<
/Text
>
<
/TouchableOpacity
>
<
/View
>
<
TouchableOpacity
onPress
=
{
onPressWithdraw
}
style
=
{
styles
.
btnSend
}
>
<
Text
style
=
{
styles
.
txtSend
}
>
{
I18n
.
t
(
'Withdraw'
)}
<
/Text
>
<
/TouchableOpacity
>
<
/View
>
<
/TouchableWithoutFeedback
>
<
/KeyboardAvoidingView
>
...
...
@@ -240,9 +252,6 @@ const styles = StyleSheet.create({
fontWeight
:
'bold'
,
},
btnSend
:
{
position
:
'absolute'
,
bottom
:
30
,
right
:
width
/
2
-
70
,
width
:
140
,
height
:
40
,
backgroundColor
:
R
.
colors
.
main
,
...
...
src/Screens/Authen/Login.js
View file @
c0a504d5
...
...
@@ -62,7 +62,10 @@ const Login = (props) => {
};
const
onSubmitLogin
=
async
(
email
,
pass
)
=>
{
const
titles
=
[
I18n
.
t
(
'Username'
).
toLowerCase
(),
I18n
.
t
(
'Password'
).
toLowerCase
()];
const
titles
=
[
I18n
.
t
(
'Username'
).
toLowerCase
(),
I18n
.
t
(
'Password'
).
toLowerCase
(),
];
const
index
=
checkFormatArray
([
email
,
pass
]);
if
(
index
===
true
)
{
...
...
@@ -110,14 +113,12 @@ const Login = (props) => {
<
InputIcon
icon
=
{
R
.
images
.
iconUser3
}
title
=
{
'Email'
}
placeholder
=
{
I18n
.
t
(
'EnterEmail'
)}
onChangeText
=
{(
val
)
=>
setEmail
(
val
)}
value
=
{
email
}
/
>
<
InputIcon
icon
=
{
R
.
images
.
iconLock
}
title
=
{
'Password'
}
placeholder
=
{
I18n
.
t
(
'EnterPassword'
)}
isPassWord
=
{
true
}
onChangeText
=
{(
val
)
=>
setPass
(
val
)}
value
=
{
pass
}
...
...
src/Screens/Authen/RegisterOTP.js
0 → 100644
View file @
c0a504d5
import
React
,
{
Component
,
useEffect
,
useState
}
from
'react'
;
import
{
View
,
Text
,
TextInput
,
StyleSheet
,
TouchableOpacity
,
Platform
,
Alert
,
}
from
'react-native'
;
import
HeaderBack
from
'../../components/Header/HeaderBack'
;
import
{
CodeField
,
Cursor
,
useBlurOnFulfill
,
useClearByFocusCell
,
}
from
'react-native-confirmation-code-field'
;
import
{
getFontXD
,
HEIGHTXD
,
WIDTHXD
}
from
'../../Config/Functions'
;
import
R
from
'../../assets/R'
;
import
{
NEWPASSWORD
}
from
'../../routers/ScreenNames'
;
import
{
verifyOTPApi
,
registorApi
}
from
'../../apis/Functions/users'
;
import
{
useNavigation
}
from
'@react-navigation/native'
;
import
I18n
from
'../../helper/i18/i18n'
;
import
AppText
from
'../../components/AppText'
;
import
{
showLoading
,
hideLoading
}
from
'../../actions/loadingAction'
;
import
{
connect
}
from
'react-redux'
;
const
CELL_COUNT
=
4
;
const
ConfirmOTP
=
(
propsa
)
=>
{
const
[
value
,
setValue
]
=
useState
(
''
);
const
navigate
=
useNavigation
();
const
ref
=
useBlurOnFulfill
({
value
,
cellCount
:
CELL_COUNT
});
const
[
props
,
getCellOnLayoutHandler
]
=
useClearByFocusCell
({
value
,
setValue
,
});
const
confirm
=
async
()
=>
{
if
(
!
value
)
{
Alert
.
alert
(
I18n
.
t
(
'Notification'
),
I18n
.
t
(
'EnterOTPRequest'
));
}
else
if
(
value
.
length
!=
4
)
{
Alert
.
alert
(
I18n
.
t
(
'Notification'
),
I18n
.
t
(
'OTPInvalid'
));
}
else
{
propsa
.
showLoading
();
const
res
=
await
verifyOTPApi
({
platform
:
Platform
.
OS
,
receiver_name
:
propsa
.
route
.
params
.
email
,
otp
:
value
,
});
if
(
res
.
data
.
code
==
200
)
{
const
{
email
,
password
,
password_confirmation
,
phone
,
sponsor_id
,
}
=
propsa
.
route
.
params
;
let
res
;
if
(
sponsor_id
)
{
res
=
await
registorApi
({
email
,
password
,
platform
:
Platform
.
OS
,
password_confirmation
,
sponsor_id
,
phone
,
});
}
else
{
res
=
await
registorApi
({
email
,
password
,
platform
:
Platform
.
OS
,
password_confirmation
,
phone
,
});
}
propsa
.
hideLoading
();
if
(
res
.
data
.
code
==
200
&&
res
.
data
.
data
)
{
setTimeout
(()
=>
{
Alert
.
alert
(
I18n
.
t
(
'Notification'
),
I18n
.
t
(
'RegisterAccountSuccess'
),
);
navigate
.
navigate
(
'LOGIN'
);
},
500
);
}
else
{
setTimeout
(()
=>
{
Alert
.
alert
(
I18n
.
t
(
'Notification'
),
res
.
data
.
message
);
},
500
);
}
}
else
{
setTimeout
(()
=>
{
Alert
.
alert
(
I18n
.
t
(
'Notification'
),
res
.
data
.
message
);
},
500
);
}
propsa
.
hideLoading
();
}
};
return
(
<
View
style
=
{{
flex
:
1
}}
>
<
HeaderBack
title
=
{
'VerifyOTP'
}
/
>
<
View
style
=
{
styles
.
container
}
>
<
View
style
=
{{
height
:
20
}}
/
>
<
View
style
=
{
styles
.
wrap
}
>
<
AppText
i18nKey
=
{
'Verify_code'
}
style
=
{
styles
.
txtTitle
}
/
>
<
View
style
=
{
styles
.
containerCode
}
>
<
CodeField
ref
=
{
ref
}
{...
props
}
value
=
{
value
}
onChangeText
=
{
setValue
}
cellCount
=
{
CELL_COUNT
}
rootStyle
=
{
styles
.
codeFieldRoot
}
keyboardType
=
"number-pad"
textContentType
=
"oneTimeCode"
renderCell
=
{({
index
,
symbol
,
isFocused
})
=>
(
<
View
onLayout
=
{
getCellOnLayoutHandler
(
index
)}
key
=
{
index
}
style
=
{[
styles
.
cellRoot
,
isFocused
&&
styles
.
focusCell
]}
>
<
Text
style
=
{
styles
.
cellText
}
>
{
symbol
||
(
isFocused
?
<
Cursor
/>
:
null
)}
<
/Text
>
<
/View
>
)}
/
>
<
/View
>
<
/View
>
<
/View
>
<
View
style
=
{
styles
.
footer
}
>
<
TouchableOpacity
onPress
=
{
confirm
}
style
=
{
styles
.
btn
}
>
<
AppText
i18nKey
=
{
'Continue'
}
style
=
{
styles
.
txtBtn
}
/
>
<
/TouchableOpacity
>
<
TouchableOpacity
style
=
{
styles
.
wrapFooter
}
onPress
=
{()
=>
navigate
.
goBack
()}
>
<
Text
style
=
{
styles
.
txtNote
}
>
{
I18n
.
t
(
'OTPValidFiveMinute'
)}
<
/Text
>
<
AppText
i18nKey
=
{
'Re_send'
}
style
=
{
styles
.
txtSend
}
/
>
<
/TouchableOpacity
>
<
/View
>
<
/View
>
);
};
const
styles
=
StyleSheet
.
create
({
container
:
{
flex
:
1
,
justifyContent
:
'center'
,
alignItems
:
'center'
,
paddingVertical
:
20
,
},
footer
:
{
height
:
200
,
justifyContent
:
'center'
,
alignItems
:
'center'
,
},
wrap
:
{
flex
:
1
,
paddingTop
:
30
,
alignItems
:
'center'
,
width
:
'100%'
,
paddingHorizontal
:
50
,
},
containerCode
:
{
height
:
50
,
width
:
'100%'
,
marginTop
:
30
,
},
codeFieldRoot
:
{
marginTop
:
20
,
},
focusCell
:
{
borderColor
:
'#000'
,
},
cellRoot
:
{
width
:
40
,
height
:
40
,
justifyContent
:
'center'
,
alignItems
:
'center'
,
borderBottomColor
:
'#ccc'
,
borderBottomWidth
:
1
,
},
cellText
:
{
color
:
'#000'
,
fontSize
:
36
,
textAlign
:
'center'
,
},
focusCell
:
{
borderBottomColor
:
'#007AFF'
,
borderBottomWidth
:
2
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
52
),
color
:
'#979797'
,
},
btn
:
{
width
:
WIDTHXD
(
521
),
height
:
HEIGHTXD
(
120
),
borderRadius
:
15
,
backgroundColor
:
'#1C6AF6'
,
justifyContent
:
'center'
,
alignItems
:
'center'
,
},
txtBtn
:
{
color
:
R
.
colors
.
white
,
fontSize
:
getFontXD
(
52
),
textTransform
:
'uppercase'
,
},
txtSend
:
{
fontSize
:
getFontXD
(
42
),
color
:
'#1C6AF6'
,
},
wrapFooter
:
{
marginTop
:
30
,
flexDirection
:
'row'
,
alignItems
:
'center'
,
},
txtNote
:
{
color
:
'#A2A2A2'
,
fontSize
:
getFontXD
(
42
),
fontStyle
:
'italic'
,
},
});
const
mapStateToProps
=
(
state
)
=>
{
return
{};
};
export
default
connect
(
mapStateToProps
,
{
showLoading
,
hideLoading
})(
ConfirmOTP
);
src/Screens/Authen/Registor.js
View file @
c0a504d5
...
...
@@ -13,9 +13,10 @@ import R from '../../assets/R';
import
{
checkFormatArray
}
from
'../../Config/Functions'
;
import
{
showLoading
,
hideLoading
}
from
'../../actions/loadingAction'
;
import
{
connect
}
from
'react-redux'
;
import
{
registorApi
}
from
'../../apis/Functions/users'
;
import
{
registorApi
,
getOTPApi
}
from
'../../apis/Functions/users'
;
import
I18n
from
'../../helper/i18/i18n'
;
import
AppText
from
'../../components/AppText'
;
import
{
REGISTEROTP
}
from
'../../routers/ScreenNames'
;
const
Registor
=
(
props
)
=>
{
const
{
navigation
}
=
props
;
...
...
@@ -41,34 +42,21 @@ const Registor = (props) => {
]);
if
(
index
===
true
)
{
let
res
;
props
.
showLoading
();
if
(
sponsor_id
)
{
res
=
await
registorApi
({
email
,
password
,
platform
:
Platform
.
OS
,
password_confirmation
,
sponsor_id
,
phone
,
});
}
else
{
res
=
await
registorApi
({
const
res
=
await
getOTPApi
({
platform
:
Platform
.
OS
,
otp_by
:
email
,
});
props
.
hideLoading
();
console
.
log
(
res
);
if
(
res
.
data
.
code
==
200
)
{
navigation
.
navigate
(
REGISTEROTP
,
{
email
,
password
,
platform
:
Platform
.
OS
,
password_confirmation
,
phone
,
sponsor_id
,
});
}
props
.
hideLoading
();
if
(
res
.
data
.
code
==
200
&&
res
.
data
.
data
)
{
setTimeout
(()
=>
{
Alert
.
alert
(
I18n
.
t
(
'Notification'
),
I18n
.
t
(
'RegisterAccountSuccess'
));
navigation
.
navigate
(
'LOGIN'
);
},
500
);
}
else
{
setTimeout
(()
=>
{
Alert
.
alert
(
I18n
.
t
(
'Notification'
),
res
.
data
.
message
);
...
...
@@ -93,35 +81,30 @@ const Registor = (props) => {
<
InputIcon
icon
=
{
R
.
images
.
iconEmail
}
title
=
{
'Email'
}
placeholder
=
{
I18n
.
t
(
'EnterEmail'
)}
onChangeText
=
{(
val
)
=>
setEmail
(
val
)}
/
>
<
InputIcon
icon
=
{
R
.
images
.
iconLock
}
title
=
{
'Password'
}
placeholder
=
{
I18n
.
t
(
'EnterPassword'
)}
onChangeText
=
{(
val
)
=>
setPassword
(
val
)}
isPassWord
=
{
true
}
/
>
<
InputIcon
icon
=
{
R
.
images
.
iconLock
}
title
=
{
'Confirm_pass'
}
placeholder
=
{
I18n
.
t
(
'EnterPassword'
)}
onChangeText
=
{(
val
)
=>
setPasswordConfirm
(
val
)}
isPassWord
=
{
true
}
/
>
<
InputIcon
icon
=
{
R
.
images
.
iconPhone3
}
title
=
{
'Phone'
}
placeholder
=
{
I18n
.
t
(
'Enter_Phone'
)}
onChangeText
=
{(
val
)
=>
setPhone
(
val
)}
isNumber
=
{
true
}
/
>
<
InputIcon
icon
=
{
R
.
images
.
iconIntroduct
}
title
=
{
'Code_introduce'
}
placeholder
=
{
I18n
.
t
(
'EnterReferralCode'
)}
onChangeText
=
{(
val
)
=>
setSponsor_id
(
val
)}
/
>
...
...
src/Screens/Exchange/Item.js
View file @
c0a504d5
...
...
@@ -38,7 +38,9 @@ const Item = (props) => {
<
Text
numberOfLines
=
{
1
}
style
=
{
styles
.
txtTitle
}
>
{
item
.
note
}
<
/Text
>
<
Text
style
=
{
styles
.
txtDate
}
>
`
${
I18n
.
t
(
'Date'
)}
${
item
.
date
}
`
<
/Text
>
<
Text
style
=
{
styles
.
txtDate
}
>
`
${
I18n
.
t
(
'Date'
)}
${
item
.
date
}
`
<
/Text
>
<
/Block
>
<
/Block
>
<
/View
>
...
...
@@ -76,7 +78,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
48
),
...
...
src/Screens/Menu/Payments/Item.js
View file @
c0a504d5
...
...
@@ -89,7 +89,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txt
:
{
fontSize
:
getFontXD
(
36
),
...
...
src/Screens/Menu/Profile/Tab/CQG.js
View file @
c0a504d5
...
...
@@ -9,22 +9,31 @@ import I18n from '../../../../helper/i18/i18n';
const
Profile
=
(
props
)
=>
{
return
(
<
View
style
=
{
styles
.
container
}
>
<
View
style
=
{
styles
.
item
}
>
<
AppText
i18nKey
=
{
'ContactCode'
}
style
=
{
styles
.
txtTitle
}
><
/AppText
>
<
Text
style
=
{
styles
.
txtBig
}
>
{
props
.
user
.
cqg_id
}
<
/Text
>
<
/View
>
<
View
style
=
{
styles
.
item
}
>
<
AppText
i18nKey
=
{
'TraddingAccountName'
}
style
=
{
styles
.
txtTitle
}
><
/AppText
>
<
Text
style
=
{
styles
.
txtBig
}
>
{
props
.
user
.
cqg_name
}
<
/Text
>
<
/View
>
<
View
style
=
{
styles
.
item
}
>
<
AppText
i18nKey
=
{
'TraddingAccountNumber'
}
style
=
{
styles
.
txtTitle
}
><
/AppText
>
<
Text
style
=
{
styles
.
txtBig
}
>
{
props
.
user
.
account
}
<
/Text
>
<
/View
>
{
props
.
user
.
status
==
3
?
(
<
View
>
{
' '
}
<
View
style
=
{
styles
.
item
}
>
<
AppText
i18nKey
=
{
'ContactCode'
}
style
=
{
styles
.
txtTitle
}
><
/AppText
>
<
Text
style
=
{
styles
.
txtBig
}
>
{
props
.
user
.
cqg_id
}
<
/Text
>
<
/View
>
<
View
style
=
{
styles
.
item
}
>
<
AppText
i18nKey
=
{
'TraddingAccountName'
}
style
=
{
styles
.
txtTitle
}
><
/AppText
>
<
Text
style
=
{
styles
.
txtBig
}
>
{
props
.
user
.
cqg_name
}
<
/Text
>
<
/View
>
<
View
style
=
{
styles
.
item
}
>
<
AppText
i18nKey
=
{
'TraddingAccountNumber'
}
style
=
{
styles
.
txtTitle
}
><
/AppText
>
<
Text
style
=
{
styles
.
txtBig
}
>
{
props
.
user
.
account
}
<
/Text
>
<
/View
>
<
/View
>
)
:
(
<
View
>
<
Text
>
Hello
<
/Text
>
<
/View
>
)}
<
/View
>
);
};
...
...
src/Screens/Menu/Rose/Item.js
View file @
c0a504d5
...
...
@@ -37,7 +37,9 @@ const Item = (props) => {
{
item
.
note
}
<
/Text
>
<
/View
>
<
Text
style
=
{
styles
.
txtDate
}
>
`
${
I18n
.
t
(
'Date'
)}
${
item
.
date
}
`
<
/Text
>
<
Text
style
=
{
styles
.
txtDate
}
>
`
${
I18n
.
t
(
'Date'
)}
${
item
.
date
}
`
<
/Text
>
<
/View
>
<
View
>
<
Text
...
...
@@ -86,7 +88,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
42
),
...
...
src/Screens/Menu/Rose/Rose.js
View file @
c0a504d5
...
...
@@ -13,12 +13,6 @@ const Rose = (props) => {
return
(
<
View
style
=
{{
flex
:
1
}}
>
<
HeaderSB
title
=
{
'Rose'
}
/
>
<
TouchableOpacity
onPress
=
{()
=>
props
.
changeLanguage
(
'en'
)}
>
<
Text
>
Change
<
/Text
>
<
/TouchableOpacity
>
<
AppText
i18nKey
=
{
'SetLanguage'
}
><
/AppText
>
<
View
style
=
{{
justifyContent
:
'center'
,
alignItems
:
'center'
,
flex
:
1
}}
>
<
AppText
i18nKey
=
{
'Features_develop'
}
...
...
src/Screens/MethodPay/Item.js
View file @
c0a504d5
...
...
@@ -20,9 +20,9 @@ const Item = (props) => {
<
Text
style
=
{
styles
.
txtBig
}
>
{
item
.
title
}
<
/Text
>
<
Block
space
=
{
'between'
}
row
flex
=
{
1
}
>
<
Block
>
<
AppText
style
=
{
styles
.
txtLeft
}
i18nKey
=
{
(
'OwnerAccount'
)}
/
>
<
AppText
style
=
{
styles
.
txtLeft
}
i18nKey
=
{
'OwnerAccount'
}
/
>
<
Text
style
=
{
styles
.
txtLeft
}
>
STK
<
/Text
>
<
AppText
style
=
{
styles
.
txtLeft
}
i18nKey
=
{
(
'Branch'
)}
/
>
<
AppText
style
=
{
styles
.
txtLeft
}
i18nKey
=
{
'Branch'
}
/
>
<
/Block
>
<
Block
>
<
Text
style
=
{
styles
.
txtRight
}
>
{
item
.
account_name
}
<
/Text
>
...
...
@@ -64,7 +64,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
42
),
...
...
src/Screens/MethodPay/ItemBank.js
View file @
c0a504d5
import
React
from
'react'
;
import
{
View
,
Text
,
StyleSheet
,
TouchableOpacity
,
Image
}
from
'react-native'
;
import
{
getFontXD
,
HEIGHTXD
,
WIDTHXD
,
toPriceVnd
,
getWidth
}
from
'../../Config/Functions'
;
import
{
getFontXD
,
HEIGHTXD
,
WIDTHXD
,
toPriceVnd
,
getWidth
,
}
from
'../../Config/Functions'
;
import
R
from
'../../assets/R'
;
import
Block
from
'../../components/Block'
;
import
Icon
from
'react-native-vector-icons/MaterialCommunityIcons'
;
...
...
@@ -10,7 +16,11 @@ const Item = (props) => {
const
{
item
}
=
props
;
return
(
<
TouchableOpacity
onPress
=
{()
=>
props
.
onPress
(
item
)}
>
<
View
style
=
{[
styles
.
container
,
{
marginBottom
:
props
.
isEndItem
?
HEIGHTXD
(
100
)
:
HEIGHTXD
(
15
)}]}
>
<
View
style
=
{[
styles
.
container
,
{
marginBottom
:
props
.
isEndItem
?
HEIGHTXD
(
100
)
:
HEIGHTXD
(
15
)},
]}
>
<
Block
flex
=
{
1
}
row
center
padding
=
{[
HEIGHTXD
(
10
),
WIDTHXD
(
10
)]}
>
<
Image
source
=
{{
uri
:
item
.
logo
}}
style
=
{
styles
.
imgIcon
}
/
>
<
Block
padding
=
{[
0
,
10
]}
>
...
...
@@ -55,7 +65,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
42
),
...
...
src/Screens/Notification/Item.js
View file @
c0a504d5
...
...
@@ -59,7 +59,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
42
),
...
...
src/Screens/Transaction/DueDate/Item.js
View file @
c0a504d5
...
...
@@ -22,7 +22,6 @@ const Item = (props) => {
<
View
style
=
{
styles
.
container
}
>
<
TouchableOpacity
onPress
=
{()
=>
props
.
onPress
(
item
)}
>
<
Block
flex
=
{
1
}
row
>
<
View
style
=
{
styles
.
wrapLeft
}
/
>
<
View
style
=
{
styles
.
wrapDate
}
>
<
Image
source
=
{
R
.
images
.
iconRecharge
}
style
=
{
styles
.
imgIcon
}
/
>
<
/View
>
...
...
@@ -74,7 +73,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
42
),
...
...
src/Screens/Transaction/Escrow/Item.js
View file @
c0a504d5
...
...
@@ -72,7 +72,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
42
),
...
...
src/Screens/Transaction/PriceList/Item.js
View file @
c0a504d5
...
...
@@ -72,7 +72,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
42
),
...
...
src/Screens/Transaction/TimeTransaction/Item.js
View file @
c0a504d5
...
...
@@ -22,7 +22,6 @@ const Item = (props) => {
<
View
style
=
{
styles
.
container
}
>
<
TouchableOpacity
onPress
=
{()
=>
props
.
onPress
(
item
)}
>
<
Block
flex
=
{
1
}
row
>
<
View
style
=
{
styles
.
wrapLeft
}
/
>
<
View
style
=
{
styles
.
wrapDate
}
>
<
Image
source
=
{
R
.
images
.
iconRecharge
}
style
=
{
styles
.
imgIcon
}
/
>
<
/View
>
...
...
@@ -74,7 +73,7 @@ const styles = StyleSheet.create({
},
wrapDate
:
{
justifyContent
:
'center'
,
padding
Horizontal
:
10
,
padding
Left
:
10
,
},
txtTitle
:
{
fontSize
:
getFontXD
(
42
),
...
...
src/components/Header/Drawer.js
View file @
c0a504d5
...
...
@@ -106,6 +106,14 @@ const menus = [
icon
:
R
.
images
.
iconHistoryMenu
,
screen
:
HISTORY
,
},
{
id
:
'65'
,
title
:
'PaymentSetting'
,
icon
:
R
.
images
.
iconMethodPay
,
screen
:
METHODPAY
,
active
:
false
,
children
:
null
,
},
],
},
{
...
...
@@ -137,14 +145,6 @@ const menus = [
},
{
id
:
'2'
,
title
:
'PaymentSetting'
,
icon
:
R
.
images
.
iconMethodPay
,
screen
:
METHODPAY
,
active
:
false
,
children
:
null
,
},
{
id
:
'5'
,
title
:
'Setting'
,
icon
:
R
.
images
.
iconSetting
,
...
...
@@ -289,7 +289,7 @@ const styles = StyleSheet.create({
color
:
'#0C0D2C'
,
},
txtTop
:
{
fontSize
:
getFontXD
(
42
),
fontSize
:
getFontXD
(
38
),
color
:
'#1E2F70'
,
},
txtLink
:
{
...
...
src/components/Header/HeaderDrawer.js
View file @
c0a504d5
...
...
@@ -16,7 +16,6 @@ import R from '../../assets/R';
import
{
getFontXD
,
HEIGHT
,
WIDTHXD
}
from
'../../Config/Functions'
;
import
LinearGradient
from
'react-native-linear-gradient'
;
import
{
connect
}
from
'react-redux'
;
import
{
HEIGHTXD
}
from
'../../Config/Functions'
;
import
Modal
from
'react-native-modal'
;
import
Drawer
from
'./Drawer'
;
import
SnackBar
from
'../SnackBar'
;
...
...
@@ -108,7 +107,7 @@ const styles = StyleSheet.create({
container
:
{
backgroundColor
:
'white'
,
height
:
'100%'
,
width
:
300
,
width
:
WIDTHXD
(
780
)
,
borderRadius
:
20
,
},
});
src/components/Header/HeaderHome.js
View file @
c0a504d5
...
...
@@ -196,7 +196,6 @@ const HeaderHome = (props) => {
/
>
<
/TouchableOpacity
>
<
/View
>
{
renderLabel
(
props
.
user
.
status
)}
<
/View
>
<
/View
>
...
...
@@ -252,7 +251,7 @@ export default connect(mapStateToProps, {})(HeaderHome);
const
styles
=
StyleSheet
.
create
({
container
:
{},
wrapWallet
:
{
height
:
8
0
,
height
:
7
0
,
width
:
'100%'
,
borderBottomWidth
:
1
,
borderBottomColor
:
'#EDEDF1'
,
...
...
@@ -266,7 +265,6 @@ const styles = StyleSheet.create({
},
containerTop
:
{
backgroundColor
:
'white'
,
height
:
290
,
width
:
'90%'
,
borderRadius
:
10
,
shadowColor
:
'#000'
,
...
...
@@ -296,8 +294,8 @@ const styles = StyleSheet.create({
resizeMode
:
'contain'
,
},
imgIconCopy
:
{
width
:
WIDTHXD
(
1
34
),
height
:
HEIGHTXD
(
1
34
),
width
:
WIDTHXD
(
1
00
),
height
:
HEIGHTXD
(
1
00
),
resizeMode
:
'contain'
,
},
...
...
@@ -319,9 +317,9 @@ const styles = StyleSheet.create({
color
:
'#A2A2A2'
,
},
imgAvatar
:
{
width
:
WIDTHXD
(
24
0
),
height
:
WIDTHXD
(
24
0
),
borderRadius
:
WIDTHXD
(
12
0
),
width
:
WIDTHXD
(
18
0
),
height
:
WIDTHXD
(
18
0
),
borderRadius
:
WIDTHXD
(
9
0
),
},
txtMoney
:
{
fontSize
:
getFontXD
(
62
),
...
...
@@ -338,7 +336,7 @@ const styles = StyleSheet.create({
},
wrapRight
:
{
flex
:
1
,
padding
Horizontal
:
2
0
,
padding
Left
:
1
0
,
},
containerInfor
:
{
flex
:
1
,
...
...
@@ -348,6 +346,8 @@ const styles = StyleSheet.create({
borderBottomColor
:
'#EDEDF1'
,
flexDirection
:
'row'
,
paddingHorizontal
:
20
,
paddingVertical
:
10
,
},
row
:
{
flexDirection
:
'row'
,
...
...
@@ -358,6 +358,7 @@ const styles = StyleSheet.create({
flexDirection
:
'row'
,
justifyContent
:
'space-between'
,
alignItems
:
'center'
,
marginTop
:
5
,
},
containerWallet
:
{
justifyContent
:
'center'
,
...
...
src/helper/i18/locales/en.js
View file @
c0a504d5
export
default
{
greeting
:
'Hi!'
,
home
:
'Home'
,
contact
:
'Contact'
,
setting
:
'Setting'
,
SetLanguage
:
' Set language'
,
MyProfile
:
'My Profile'
,
VerifyAccount
:
'Verify account'
,
Payments
:
'Payments'
,
Rose
:
'Rose'
,
TeamBonus
:
'Team bonus'
,
MyPartner
:
'My partner'
,
Account
:
'Account'
,
Notification
:
'Notification'
,
News
:
'News'
,
Deposit
:
'Deposit'
,
Withdraw
:
'Withdraw'
,
Transfer
:
'Transfer'
,
History
:
'History'
,
NotVerified
:
'Not verified'
,
Verified
:
'Verified'
,
WaitVerification
:
'Waiting verification'
,
AccountWallet
:
'Account wallet'
,
Wallet
:
'Wallet'
,
AccountCQG
:
'Account CQG'
,
WaitOpenCQG
:
'Wait open CQG'
,
OpenAccountCQG
:
'Open account CQG'
,
AccountVerify
:
'Account verify'
,
Profit
:
'Profit'
,
RevenueTeam
:
'Revenue team'
,
RevenueDonors
:
'Revenue donors'
,
Invset
:
'Invest'
,
Contract
:
'Contract'
,
PaymentSetting
:
'Payment m
ethod setting'
,
CustomerCare
:
'Customer care'
,
Feedback
:
'Feedback'
,
LegalDocument
:
'Legal document'
,
Setting
:
'Setting'
,
Logout
:
'Logout'
,
SelectPaymentMethod
:
'Select Payment Method'
,
InvestmentDeposit
:
'Investment deposit'
,
ForgotPassword
:
'Forgot password'
,
VerifyOTP
:
'Verify OTP'
,
ChangeNewPassword
:
'Change new password'
,
SendFeedback
:
'Send feedback'
,
GeneralBusiness
:
'General business'
,
Customer
:
'Customer'
,
Partnership
:
'Partnership'
,
AddPaymentMethod
:
'Add payment method'
,
DetailMethod
:
'Detail method'
,
Detail
:
'Detail'
,
DetailVideo
:
'Detail video'
,
NoData
:
'No data!'
,
All
:
'All'
,
PriceTable
:
'Price table'
,
Chart
:
'Chart'
,
Calendar
:
'Calendar'
,
Fullname
:
'Full name'
,
Birth
:
'Birth'
,
Male
:
'Male'
,
Status
:
'Status'
,
Phone
:
'Phone'
,
Enter_Phone
:
'Enter phone'
,
Address
:
'Address'
,
Update
:
'Update'
,
ContactCode
:
'Contact code'
,
TraddingAccountName
:
'Tradding account name'
,
TraddingAccountNumber
:
'Tradding account number'
,
GeneralInformation
:
'General information'
,
Profile
:
'Profile'
,
CustomerAgreement
:
'Customer agreement'
,
BusinessAgreement
:
'Business agreement'
,
PartnershipAgreement
:
'Partnership agreement'
,
Waiting
:
'Waiting'
,
Success
:
'Success'
,
Ok
:
'Ok'
,
Can_not_get_data
:
'Can
\'
t get data'
,
Search
:
'Search'
,
NullDataSearch
:
'Data not found'
,
greeting
:
'Hi!'
,
home
:
'Home'
,
contact
:
'Contact'
,
setting
:
'Setting'
,
SetLanguage
:
' Set language'
,
MyProfile
:
'My Profile'
,
VerifyAccount
:
'Verify account'
,
Payments
:
'Payments'
,
Rose
:
'Rose'
,
TeamBonus
:
'Team bonus'
,
MyPartner
:
'My partner'
,
Account
:
'Account'
,
Notification
:
'Notification'
,
News
:
'News'
,
Deposit
:
'Deposit'
,
Withdraw
:
'Withdraw'
,
Transfer
:
'Transfer'
,
History
:
'History'
,
NotVerified
:
'Not verified'
,
Verified
:
'Verified'
,
WaitVerification
:
'Waiting verification'
,
AccountWallet
:
'Account wallet'
,
Wallet
:
'Wallet'
,
AccountCQG
:
'Account CQG'
,
WaitOpenCQG
:
'Wait open CQG'
,
OpenAccountCQG
:
'Open account CQG'
,
AccountVerify
:
'Account verify'
,
Profit
:
'Profit'
,
RevenueTeam
:
'Revenue team'
,
RevenueDonors
:
'Revenue donors'
,
Invset
:
'Invest'
,
Contract
:
'Contract'
,
PaymentSetting
:
'M
ethod setting'
,
CustomerCare
:
'Customer care'
,
Feedback
:
'Feedback'
,
LegalDocument
:
'Legal document'
,
Setting
:
'Setting'
,
Logout
:
'Logout'
,
SelectPaymentMethod
:
'Select Payment Method'
,
InvestmentDeposit
:
'Investment deposit'
,
ForgotPassword
:
'Forgot password'
,
VerifyOTP
:
'Verify OTP'
,
ChangeNewPassword
:
'Change new password'
,
SendFeedback
:
'Send feedback'
,
GeneralBusiness
:
'General business'
,
Customer
:
'Customer'
,
Partnership
:
'Partnership'
,
AddPaymentMethod
:
'Add payment method'
,
DetailMethod
:
'Detail method'
,
Detail
:
'Detail'
,
DetailVideo
:
'Detail video'
,
NoData
:
'No data!'
,
All
:
'All'
,
PriceTable
:
'Price table'
,
Chart
:
'Chart'
,
Calendar
:
'Calendar'
,
Fullname
:
'Full name'
,
Birth
:
'Birth'
,
Male
:
'Male'
,
Status
:
'Status'
,
Phone
:
'Phone'
,
Enter_Phone
:
'Enter phone'
,
Address
:
'Address'
,
Update
:
'Update'
,
ContactCode
:
'Contact code'
,
TraddingAccountName
:
'Tradding account name'
,
TraddingAccountNumber
:
'Tradding account number'
,
GeneralInformation
:
'General information'
,
Profile
:
'Profile'
,
CustomerAgreement
:
'Customer agreement'
,
BusinessAgreement
:
'Business agreement'
,
PartnershipAgreement
:
'Partnership agreement'
,
Waiting
:
'Waiting'
,
Success
:
'Success'
,
Ok
:
'Ok'
,
Can_not_get_data
:
"Can't get data"
,
Search
:
'Search'
,
NullDataSearch
:
'Data not found'
,
Cancel
:
'Cancel'
,
Close
:
'Close'
,
No_Internet
:
'No internet'
,
Check_Internet_Connect
:
'Check internet connect'
,
Retry
:
'Retry'
,
Select_source_image
:
'Select the source of the image'
,
Photo_library
:
'Photo library'
,
Take_photo
:
'Take a photo'
,
EnableCQG
:
'Enable CQG'
,
Request_Open_Account_CQG
:
'Request open account CQG'
,
Waiting_for_Progress
:
'Waiting for progress'
,
PopupVerifyAccount
:
'Your account is not verified. Go to account verification?'
,
PopupOpenCQG
:
'Would you like to open a CQG account to make investments?'
,
Free
:
'Free'
,
Open_account
:
'Open account'
,
Provisional
:
'Provisional'
,
Here
:
'Here'
,
Open_account_demo
:
'You can open a demo account'
,
Features_develop
:
'No data!'
,
Language
:
'Language'
,
Email
:
'Email'
,
Password
:
'Password'
,
Login
:
'Login'
,
Register
:
'Register'
,
Confirm_pass
:
'Confirm password'
,
Code_introduce
:
'Code introduce'
,
Account_already
:
'Do you already have an account?'
,
Have_account
:
'Do not have an account?'
,
Verify_code
:
'Verification codes:'
,
Continue
:
'Continue'
,
Re_send
:
'Re send'
,
Copied
:
'Copied!'
,
Please_fill_in
:
'Please fill in '
,
RequestFilter
:
'Request filter'
,
FromDate
:
'From date:'
,
ToDate
:
'To date:'
,
Failed
:
'Failed'
,
SelectRequestStatus
:
'Select request status'
,
TopVideo
:
'Video watching a lot'
,
Delete
:
'Delete'
,
SelectBank
:
'Select Bank'
,
Branch
:
'Branch'
,
OwnerAccountName
:
'Owner account name'
,
AccountNumber
:
'Account Number'
,
DeletePaymentMethodConfirm
:
'Do you went delete this payment method?'
,
Forbidden
:
'Forbidden'
,
OwnerAccount
:
'Owner Account'
,
Add
:
'Add'
,
Note_cqg
:
'Note: The fee is calculated on a monthly basis and is applied until the end of the day 30/12/2021'
,
CardType
:
'Card type'
,
BankCode
:
'Bank code'
,
CardNumberOrAccount
:
'Card number/Account'
,
Confirm
:
'Confirm'
,
AmountOfMoney
:
'Amount of money'
,
Note
:
'Note'
,
SourceAccount
:
'Source account'
,
ChooseBeneficiaryAccount
:
'Choose the beneficiary account'
,
BeneficiaryAccount
:
'the beneficiary account'
,
FromWallet
:
'From wallet'
,
FromCQGAccount
:
'From CQG account'
,
SettingPaymentMethodConfirm
:
'You have not the payment method. Go to payment method setting?'
,
EnterEmailRequest
:
'Please enter email'
,
EnterEmail
:
'Enter email'
,
GetVerificationCode
:
'Get the verification code'
,
BackToLogin
:
'Back to login'
,
OTPValidFiveMinute
:
'The OTP code is valid for 5 minutes'
,
EnterNewPassword
:
'Please enter a new password'
,
EnterNewPasswordHint
:
'Enter a new password'
,
ReEnterPassword
:
'Reenter password'
,
ConfirmNewPassword
:
'Confirm new password'
,
ChangePasswordSuccess
:
'Change password success'
,
EnterAllInfo
:
'Please complete all information '
,
Date
:
'Date'
,
ReviewService
:
'Review service of DCV Invest'
,
VeryBad
:
'Very bad'
,
Bad
:
'Bad'
,
Normal
:
'Normal'
,
Good
:
'Good'
,
VeryGood
:
'Very good'
,
ShareYourFeel
:
'Share your feel about service'
,
UploadImage
:
'Upload image'
,
BonusMoney
:
'Bonus money'
,
Content
:
'Content'
,
CopyLink
:
'Copied referral link '
,
CardAccount
:
'Card account'
,
FirstLastName
:
'First and last name'
,
Name
:
'Name'
,
PhoneNumber
:
'Phone number'
,
IdentityCard
:
'Identity card'
,
Passport
:
'Passport'
,
CitizenIdentification
:
'Citizen identification'
,
IdentityCardFrontPhoto
:
'Photo on front of ID card'
,
IdentityCitizenCardFrontPhoto
:
'Photo on front of ID/Citizen card'
,
IdentityCardBackPhoto
:
'Photo on the back of ID card'
,
IdentityCitizenCardBackPhoto
:
'Photo on the back of ID/Citizen card'
,
SignPhoto
:
'Sign photo'
,
EnterOTPRequest
:
'Please enter OTP code'
,
OTPInvalid
:
'OTP code invalid'
,
Username
:
'Username'
,
EnterPassword
:
'Enter password'
,
ConfirmPassword
:
'Confirm password'
,
RegisterAccountSuccess
:
'Register account success!'
,
EnterReferralCode
:
'Enter a referral code if available'
,
Male2
:
'Male'
,
Female
:
'Female'
,
Bank
:
'Bank'
,
OwnerAccount2
:
'Owner account'
,
NothingChange
:
'Nothing change'
,
Tradding
:
'Tradding'
,
ContractDescription
:
'Contract description'
,
QualityStandard
:
'Quality Standard'
,
CommodityTransactions
:
'Commodity transactions'
,
CommodityCode
:
'Commodity code'
,
Escrow
:
'Escrow'
,
PositionLimit
:
'Position limit'
,
PaymentMethod
:
'Payment method'
,
TimeTransaction
:
'Time transaction'
,
Time
:
'Time'
,
TransactionSession
:
'Transaction session'
,
MaturityMonth
:
'Maturity month'
,
RegisteredDeliveryDate
:
'Registered delivery date'
,
PriceInfo
:
'Price Information'
,
ListedUnit
:
'Listed unit'
,
PriceStep
:
'Price step'
,
ContactSize
:
'Contact size'
,
PriceRange
:
'Price range'
,
FirstNotifyDate
:
'First notify date'
,
EndlessTransactionDate
:
'Endless transaction date'
,
Finance
:
'Finance'
,
Support
:
'Hỗ trợ'
,
Support_Customer
:
'Support Customer'
,
Price_List
:
'Price list'
,
Time_Transaction
:
'Time transaction'
,
Due_Date
:
'Due date'
,
Version
:
'Version'
,
UpdateDescription
:
'A new version of DCVInvest is available. Update now to continue using and experiencing the latest system features!'
,
Cancel
:
'Cancel'
,
Close
:
'Close'
,
No_Internet
:
'No internet'
,
Check_Internet_Connect
:
'Check internet connect'
,
Retry
:
'Retry'
,
Select_source_image
:
'Select the source of the image'
,
Photo_library
:
'Photo library'
,
Take_photo
:
'Take a photo'
,
EnableCQG
:
'Enable CQG'
,
Request_Open_Account_CQG
:
'Request open account CQG'
,
Waiting_for_Progress
:
'Waiting for progress'
,
PopupVerifyAccount
:
'Your account is not verified. Go to account verification?'
,
PopupOpenCQG
:
'Would you like to open a CQG account to make investments?'
,
Free
:
'Free'
,
Open_account
:
'Open account'
,
Provisional
:
'Provisional'
,
Here
:
'Here'
,
Open_account_demo
:
'You can open a demo account'
,
Features_develop
:
'No data!'
,
Language
:
'Language'
,
Email
:
'Email'
,
Password
:
'Password'
,
Login
:
'Login'
,
Register
:
'Register'
,
Confirm_pass
:
'Confirm password'
,
Code_introduce
:
'Code introduce'
,
Account_already
:
'Do you already have an account?'
,
Have_account
:
'Do not have an account?'
,
Verify_code
:
'Verification codes:'
,
Continue
:
'Continue'
,
Re_send
:
'Re send'
,
Copied
:
'Copied!'
,
Please_fill_in
:
'Please fill in '
,
RequestFilter
:
'Request filter'
,
FromDate
:
'From date:'
,
ToDate
:
'To date:'
,
Failed
:
'Failed'
,
SelectRequestStatus
:
'Select request status'
,
TopVideo
:
'Video watching a lot'
,
Delete
:
'Delete'
,
SelectBank
:
'Select Bank'
,
Branch
:
'Branch'
,
OwnerAccountName
:
'Owner account name'
,
AccountNumber
:
'Account Number'
,
DeletePaymentMethodConfirm
:
'Do you went delete this payment method?'
,
Forbidden
:
'Forbidden'
,
OwnerAccount
:
'Owner Account'
,
Add
:
'Add'
,
Note_cqg
:
'Note: The fee is calculated on a monthly basis and is applied until the end of the day 30/12/2021'
,
CardType
:
'Card type'
,
BankCode
:
'Bank code'
,
CardNumberOrAccount
:
'Card number/Account'
,
Confirm
:
'Confirm'
,
AmountOfMoney
:
'Amount of money'
,
Note
:
'Note'
,
SourceAccount
:
'Source account'
,
ChooseBeneficiaryAccount
:
'Choose the beneficiary account'
,
BeneficiaryAccount
:
'the beneficiary account'
,
FromWallet
:
'From wallet'
,
FromCQGAccount
:
'From CQG account'
,
SettingPaymentMethodConfirm
:
'You have not the payment method. Go to payment method setting?'
,
EnterEmailRequest
:
'Please enter email'
,
EnterEmail
:
'Enter email'
,
GetVerificationCode
:
'Get the verification code'
,
BackToLogin
:
'Back to login'
,
OTPValidFiveMinute
:
'The OTP code is valid for 5 minutes'
,
EnterNewPassword
:
'Please enter a new password'
,
EnterNewPasswordHint
:
'Enter a new password'
,
ReEnterPassword
:
'Reenter password'
,
ConfirmNewPassword
:
'Confirm new password'
,
ChangePasswordSuccess
:
'Change password success'
,
EnterAllInfo
:
'Please complete all information '
,
Date
:
'Date'
,
ReviewService
:
'Review service of DCV Invest'
,
VeryBad
:
'Very bad'
,
Bad
:
'Bad'
,
Normal
:
'Normal'
,
Good
:
'Good'
,
VeryGood
:
'Very good'
,
ShareYourFeel
:
'Share your feel about service'
,
UploadImage
:
'Upload image'
,
BonusMoney
:
'Bonus money'
,
Content
:
'Content'
,
CopyLink
:
'Copied referral link '
,
CardAccount
:
'Card account'
,
FirstLastName
:
'First and last name'
,
Name
:
'Name'
,
PhoneNumber
:
'Phone number'
,
IdentityCard
:
'Identity card'
,
Passport
:
'Passport'
,
CitizenIdentification
:
'Citizen identification'
,
IdentityCardFrontPhoto
:
'Photo on front of ID card'
,
IdentityCitizenCardFrontPhoto
:
'Photo on front of ID/Citizen card'
,
IdentityCardBackPhoto
:
'Photo on the back of ID card'
,
IdentityCitizenCardBackPhoto
:
'Photo on the back of ID/Citizen card'
,
SignPhoto
:
'Sign photo'
,
EnterOTPRequest
:
'Please enter OTP code'
,
OTPInvalid
:
'OTP code invalid'
,
Username
:
'Username'
,
EnterPassword
:
'Enter password'
,
ConfirmPassword
:
'Confirm password'
,
RegisterAccountSuccess
:
'Register account success!'
,
EnterReferralCode
:
'Enter a referral code if available'
,
Male2
:
'Male'
,
Female
:
'Female'
,
Bank
:
'Bank'
,
OwnerAccount2
:
'Owner account'
,
NothingChange
:
'Nothing change'
,
Tradding
:
'Tradding'
,
ContractDescription
:
'Contract description'
,
QualityStandard
:
'Quality Standard'
,
CommodityTransactions
:
'Commodity transactions'
,
CommodityCode
:
'Commodity code'
,
Escrow
:
'Escrow'
,
PositionLimit
:
'Position limit'
,
PaymentMethod
:
'Payment method'
,
TimeTransaction
:
'Time transaction'
,
Time
:
'Time'
,
TransactionSession
:
'Transaction session'
,
MaturityMonth
:
'Maturity month'
,
RegisteredDeliveryDate
:
'Registered delivery date'
,
PriceInfo
:
'Price Information'
,
ListedUnit
:
'Listed unit'
,
PriceStep
:
'Price step'
,
ContactSize
:
'Contact size'
,
PriceRange
:
'Price range'
,
FirstNotifyDate
:
'First notify date'
,
EndlessTransactionDate
:
'Endless transaction date'
,
Finance
:
'Finance'
,
Support
:
'Hỗ trợ'
,
Support_Customer
:
'Support Customer'
,
Price_List
:
'Price list'
,
Time_Transaction
:
'Time transaction'
,
Due_Date
:
'Due date'
,
Version
:
'Version'
,
UpdateDescription
:
'A new version of DCVInvest is available. Update now to continue using and experiencing the latest system features!'
,
};
src/helper/i18/locales/vn.js
View file @
c0a504d5
...
...
@@ -34,8 +34,8 @@ export default {
RevenueDonors
:
'Doanh thu nhà tài trợ'
,
Invset
:
'Đầu tư'
,
Contract
:
'Hợp đồng'
,
PaymentSetting
:
'
Cài đặt p
hương thức thanh toán'
,
CustomerCare
:
'
Chăm sóc
khách hàng'
,
PaymentSetting
:
'
P
hương thức thanh toán'
,
CustomerCare
:
'
Tư vấn
khách hàng'
,
Feedback
:
'Phản hồi'
,
LegalDocument
:
'Giấy tờ pháp lý'
,
Setting
:
'Cài đặt'
,
...
...
src/routers/ScreenNames.js
View file @
c0a504d5
...
...
@@ -66,3 +66,4 @@ export const LEGALPARTNER = 'LEGALPARTNER';
export
const
HISTORYDETAIL
=
'HISTORYDETAIL'
;
export
const
PRODUCTDETAIL
=
'PRODUCTDETAIL'
;
export
const
REGISTEROTP
=
'REGISTEROTP'
;
src/routers/StackNavigation.js
View file @
c0a504d5
...
...
@@ -46,6 +46,7 @@ import Partner from '../Screens/LegalDocument/Partner';
import
SnackBar
from
'../components/SnackBar'
;
import
DetailHistory
from
'../Screens/Action/History/DetailHistory'
;
import
ProductDetail
from
'../Screens/Transaction/ProductDetail/ProductDetail'
;
import
RegisterOTP
from
'../Screens/Authen/RegisterOTP'
;
import
*
as
ScreenName
from
'./ScreenNames'
;
...
...
@@ -67,6 +68,7 @@ function MyStack(props) {
<
Stack
.
Screen
name
=
{
ScreenName
.
HISTORYDETAIL
}
component
=
{
DetailHistory
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
LEGALDOCUMENT
}
component
=
{
LegaDocument
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
NOTIFICATION
}
component
=
{
Notification
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
REGISTEROTP
}
component
=
{
RegisterOTP
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
LEGALBUSINESS
}
component
=
{
Business
}
/
>
<
Stack
.
Screen
name
=
{
ScreenName
.
LEGALCUSTOMER
}
component
=
{
Customer
}
/
>
...
...
src/routers/TabNavigation.js
View file @
c0a504d5
import
React
,
{
useEffect
}
from
'react'
;
import
{
View
,
Text
}
from
'react-native'
;
import
{
View
,
Text
,
Linking
}
from
'react-native'
;
import
{
createBottomTabNavigator
}
from
'@react-navigation/bottom-tabs'
;
import
Icon
from
'react-native-vector-icons/FontAwesome5'
;
import
Ionicons
from
'react-native-vector-icons/Ionicons'
;
...
...
@@ -22,6 +22,7 @@ import I18n from '../helper/i18/i18n';
import
{
changeLanguage
}
from
'../actions/language'
;
import
KEY
from
'../assets/AsynStorage'
;
import
AsyncStorage
from
'@react-native-community/async-storage'
;
import
{
DETAILNEW
}
from
'../routers/ScreenNames'
;
const
Tab
=
createBottomTabNavigator
();
...
...
@@ -33,11 +34,35 @@ const TabNavigator = (props) => {
const
navigate
=
useNavigation
();
useEffect
(()
=>
{
setInitLanguage
();
checkDeepking
();
setTimeout
(()
=>
{
showPopUp
();
},
3000
);
},
[]);
const
checkDeepking
=
()
=>
{
Linking
.
getInitialURL
().
then
((
url
)
=>
{
if
(
url
)
deeplinkScreen
(
url
);
});
Linking
.
addEventListener
(
'url'
,
(
url
)
=>
{
if
(
url
)
handleOpenURL
(
url
);
});
};
const
handleOpenURL
=
(
event
)
=>
{
deeplinkScreen
(
event
.
url
);
};
const
deeplinkScreen
=
(
url
)
=>
{
const
route
=
url
.
replace
(
/.*
?
:
\/\/
/g
,
''
);
const
id
=
route
.
match
(
/
\/([^\/]
+
)\/?
$/
)[
1
];
const
root
=
route
.
split
(
'/'
)[
0
];
// const routeName = route.split('/')[1];
if
(
root
==
'screen'
)
{
navigate
.
navigate
(
DETAILNEW
,
{
id
});
}
};
useEffect
(()
=>
{
checkScreenInit
();
},
[
props
.
screenInit
]);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment