react-native-timacare 3.3.14 → 3.3.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/lib/commonjs/screens/home/DigitalTopupItem.js +1 -1
  2. package/lib/commonjs/screens/home/DigitalTopupItem.js.flow +595 -425
  3. package/lib/commonjs/screens/home/DigitalTopupItem.js.map +1 -1
  4. package/lib/commonjs/screens/home/index.js +1 -1
  5. package/lib/commonjs/screens/home/index.js.flow +5 -1
  6. package/lib/commonjs/screens/home/index.js.map +1 -1
  7. package/lib/commonjs/screens/mrz-scanner/index.js +1 -1
  8. package/lib/commonjs/screens/mrz-scanner/index.js.flow +40 -40
  9. package/lib/commonjs/screens/mrz-scanner/index.js.map +1 -1
  10. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationBack.js +1 -1
  11. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationBack.js.flow +17 -4
  12. package/lib/commonjs/screens/toan-trinh-so/VehicleRegistrationBack.js.map +1 -1
  13. package/lib/commonjs/services/api/api.js +1 -1
  14. package/lib/commonjs/services/api/api.js.flow +16 -0
  15. package/lib/commonjs/services/api/api.js.map +1 -1
  16. package/lib/module/screens/home/DigitalTopupItem.js +1 -1
  17. package/lib/module/screens/home/DigitalTopupItem.js.map +1 -1
  18. package/lib/module/screens/home/index.js +1 -1
  19. package/lib/module/screens/home/index.js.map +1 -1
  20. package/lib/module/screens/mrz-scanner/index.js +1 -1
  21. package/lib/module/screens/mrz-scanner/index.js.map +1 -1
  22. package/lib/module/screens/toan-trinh-so/VehicleRegistrationBack.js +1 -1
  23. package/lib/module/screens/toan-trinh-so/VehicleRegistrationBack.js.map +1 -1
  24. package/lib/module/services/api/api.js +1 -1
  25. package/lib/module/services/api/api.js.map +1 -1
  26. package/lib/typescript/screens/home/DigitalTopupItem.d.ts +2 -1
  27. package/lib/typescript/screens/home/DigitalTopupItem.d.ts.map +1 -1
  28. package/lib/typescript/screens/home/index.d.ts.map +1 -1
  29. package/lib/typescript/screens/toan-trinh-so/VehicleRegistrationBack.d.ts.map +1 -1
  30. package/lib/typescript/services/api/api.d.ts +16 -0
  31. package/lib/typescript/services/api/api.d.ts.map +1 -1
  32. package/package.json +1 -1
  33. package/src/screens/home/DigitalTopupItem.tsx +595 -425
  34. package/src/screens/home/index.tsx +5 -1
  35. package/src/screens/mrz-scanner/index.tsx +40 -40
  36. package/src/screens/toan-trinh-so/VehicleRegistrationBack.tsx +17 -4
  37. package/src/services/api/api.ts +16 -0
@@ -1,10 +1,18 @@
1
1
  //@ts-nocheck
2
- import React from 'react';
3
- import { TouchableOpacity, View, ViewStyle } from 'react-native';
2
+ import React, { useEffect } from 'react';
3
+ import {
4
+ Alert,
5
+ Dimensions,
6
+ Image,
7
+ TouchableOpacity,
8
+ View,
9
+ ViewStyle,
10
+ } from 'react-native';
4
11
  import LinearGradient from 'react-native-linear-gradient';
5
12
  import { IconMoney2, IconTick, IconTima16 } from '../../assets/svgs';
6
13
  import { formatMoney } from '../../utils';
7
14
  import { MText } from '../../components/MText';
15
+ import Modal from 'react-native-modal';
8
16
  import {
9
17
  IconStep1,
10
18
  IconStep1Disable,
@@ -22,530 +30,692 @@ import {
22
30
  import { color } from '../../theme';
23
31
  import { ScreenNames } from '../../navigation';
24
32
  import { Info } from '../../assets/icons';
33
+ import { Api } from '../../services/api';
25
34
 
26
35
  interface IProps {
27
36
  item?: any;
28
37
  navigation: any;
38
+ callback?: () => void;
29
39
  }
30
- export default function DigitalTopupItem({ item, navigation }: IProps) {
40
+ export default function DigitalTopupItem({
41
+ item,
42
+ navigation,
43
+ callback,
44
+ }: IProps) {
31
45
  const [showModal, setShowModal] = React.useState(false);
46
+ const [showModalInfo, setShowModalInfo] = React.useState(false);
47
+ const [isLoading, setIsLoading] = React.useState(false);
48
+
49
+ useEffect(() => {
50
+ if (item && item?.isPopupSuggestTopup === true) {
51
+ setShowModalInfo(true);
52
+ }
53
+ }, [item]);
54
+
55
+ const onConfirm = async (typeId) => {
56
+ try {
57
+ setIsLoading(true);
58
+ const response = await Api.getInstance().confirmLoanDigitalTopup({
59
+ loanBriefId: item?.id,
60
+ typeId: typeId,
61
+ });
62
+ if (response?.kind === 'ok' && response?.data?.meta?.errorCode === 200) {
63
+ setShowModalInfo(false);
64
+ if (callback) {
65
+ callback();
66
+ }
67
+ } else {
68
+ Alert.alert(
69
+ 'Thông báo',
70
+ response.data.meta.errorMessage ||
71
+ 'Có lỗi xảy ra, vui lòng thử lại sau!'
72
+ );
73
+ }
74
+ } catch (error) {
75
+ Alert.alert('Thông báo', 'Có lỗi xảy ra, vui lòng thử lại sau!');
76
+ } finally {
77
+ setIsLoading(false);
78
+ }
79
+ };
80
+
32
81
  return (
33
- <View
34
- style={{
35
- backgroundColor: '#FFFFFF',
36
- paddingHorizontal: 16,
37
- marginBottom: 16,
38
- borderRadius: 8,
39
- borderWidth: 0.5,
40
- borderColor: '#E0E0E0',
41
- }}
42
- >
43
- <LinearGradient
44
- colors={['#FF8E4F', '#EF592E']}
82
+ <>
83
+ <View
45
84
  style={{
46
- borderTopLeftRadius: 8,
47
- borderTopRightRadius: 8,
48
- marginHorizontal: -16,
85
+ backgroundColor: '#FFFFFF',
86
+ paddingHorizontal: 16,
87
+ marginBottom: 16,
88
+ borderRadius: 8,
89
+ borderWidth: 0.5,
90
+ borderColor: '#E0E0E0',
49
91
  }}
50
92
  >
51
- <View
93
+ <LinearGradient
94
+ colors={['#FF8E4F', '#EF592E']}
52
95
  style={{
53
- flexDirection: 'row',
54
- justifyContent: 'space-between',
55
- alignItems: 'center',
56
- paddingHorizontal: 16,
57
- paddingVertical: 8,
96
+ borderTopLeftRadius: 8,
97
+ borderTopRightRadius: 8,
98
+ marginHorizontal: -16,
58
99
  }}
59
100
  >
60
101
  <View
61
102
  style={{
62
103
  flexDirection: 'row',
104
+ justifyContent: 'space-between',
63
105
  alignItems: 'center',
64
- gap: 8,
106
+ paddingHorizontal: 16,
107
+ paddingVertical: 8,
65
108
  }}
66
109
  >
67
- <IconMoney2 />
110
+ <View
111
+ style={{
112
+ flexDirection: 'row',
113
+ alignItems: 'center',
114
+ gap: 8,
115
+ }}
116
+ >
117
+ <IconMoney2 />
118
+ <MText
119
+ style={{
120
+ fontSize: 12,
121
+ color: 'white',
122
+ }}
123
+ >
124
+ HD-{item?.id}
125
+ </MText>
126
+ </View>
68
127
  <MText
69
128
  style={{
70
129
  fontSize: 12,
71
130
  color: 'white',
131
+ fontWeight: 'bold',
72
132
  }}
73
133
  >
74
- HD-{item?.id}
134
+ {formatMoney(item?.loanAmount)}đ
75
135
  </MText>
76
136
  </View>
77
- <MText
78
- style={{
79
- fontSize: 12,
80
- color: 'white',
81
- fontWeight: 'bold',
82
- }}
83
- >
84
- {formatMoney(item?.loanAmount)}đ
85
- </MText>
86
- </View>
87
- </LinearGradient>
137
+ </LinearGradient>
88
138
 
89
- <View
90
- style={{
91
- flexDirection: 'row',
92
- justifyContent: 'space-between',
93
- marginTop: 16,
94
- }}
95
- >
96
- <TouchableOpacity
97
- disabled={item?.step === 3 ? false : true}
98
- style={$action}
99
- onPress={() => {
100
- navigation.push(ScreenNames.ReviewLoan, {
101
- loan: item,
102
- });
139
+ <View
140
+ style={{
141
+ flexDirection: 'row',
142
+ justifyContent: 'space-between',
143
+ marginTop: 16,
103
144
  }}
104
145
  >
105
- {item?.step < 3 ? (
106
- <IconStep1Disable />
107
- ) : item?.step === 3 ? (
108
- <IconStep1 />
109
- ) : (
110
- <IconStep1Success />
111
- )}
112
- <MText
113
- style={{
114
- textAlign: 'center',
115
- fontSize: 10,
116
- marginTop: 5,
117
- color:
118
- item?.step < 3
119
- ? '#999999'
120
- : item?.step === 3
121
- ? '#EF592E'
122
- : '#333333',
123
- }}
124
- >
125
- Thông tin{'\n'}khoản vay
126
- </MText>
127
- </TouchableOpacity>
128
- <TouchableOpacity
129
- style={$action}
130
- disabled={
131
- item?.step === 4 || item?.step === 5 || item?.step === 6
132
- ? false
133
- : true
134
- }
135
- onPress={() => {
136
- if (item?.step === 4) {
137
- navigation.push(ScreenNames.OCR, {
146
+ <TouchableOpacity
147
+ disabled={item?.step === 3 ? false : true}
148
+ style={$action}
149
+ onPress={() => {
150
+ navigation.push(ScreenNames.ReviewLoan, {
138
151
  loan: item,
139
- front: true,
140
152
  });
141
- } else if (item?.step === 5) {
142
- if (item?.typeLoan === 5) {
143
- navigation.push(ScreenNames.ReviewInformation, {
153
+ }}
154
+ >
155
+ {item?.step < 3 ? (
156
+ <IconStep1Disable />
157
+ ) : item?.step === 3 ? (
158
+ <IconStep1 />
159
+ ) : (
160
+ <IconStep1Success />
161
+ )}
162
+ <MText
163
+ style={{
164
+ textAlign: 'center',
165
+ fontSize: 10,
166
+ marginTop: 5,
167
+ color:
168
+ item?.step < 3
169
+ ? '#999999'
170
+ : item?.step === 3
171
+ ? '#EF592E'
172
+ : '#333333',
173
+ }}
174
+ >
175
+ Thông tin{'\n'}khoản vay
176
+ </MText>
177
+ </TouchableOpacity>
178
+ <TouchableOpacity
179
+ style={$action}
180
+ disabled={
181
+ item?.step === 4 || item?.step === 5 || item?.step === 6
182
+ ? false
183
+ : true
184
+ }
185
+ onPress={() => {
186
+ if (item?.step === 4) {
187
+ navigation.push(ScreenNames.OCR, {
144
188
  loan: item,
189
+ front: true,
145
190
  });
146
- } else {
147
- navigation.push(ScreenNames.TopupLoanInfo, {
191
+ } else if (item?.step === 5) {
192
+ if (item?.typeLoan === 5) {
193
+ navigation.push(ScreenNames.ReviewInformation, {
194
+ loan: item,
195
+ });
196
+ } else {
197
+ navigation.push(ScreenNames.TopupLoanInfo, {
198
+ loan: item,
199
+ });
200
+ }
201
+ } else if (item?.step === 6) {
202
+ navigation.push(ScreenNames.ReviewInformationOther, {
148
203
  loan: item,
149
204
  });
150
205
  }
151
- } else if (item?.step === 6) {
152
- navigation.push(ScreenNames.ReviewInformationOther, {
153
- loan: item,
154
- });
155
- }
156
- }}
157
- >
158
- {item?.step < 4 ? (
159
- <IconStep2Disable />
160
- ) : item?.step === 4 || item?.step === 5 || item?.step === 6 ? (
161
- <IconStep2 />
162
- ) : (
163
- <IconStep2Success />
164
- )}
165
- <MText
166
- style={{
167
- textAlign: 'center',
168
- fontSize: 10,
169
- marginTop: 5,
170
- color:
171
- item?.step < 4
172
- ? '#999999'
173
- : item?.step === 4 || item?.step === 5 || item?.step === 6
174
- ? '#EF592E'
175
- : '#333333',
176
- }}
177
- >
178
- Thông tin{'\n'}cá nhân
179
- </MText>
180
- </TouchableOpacity>
181
- <TouchableOpacity
182
- disabled={item?.step === 9 ? false : true}
183
- style={$action}
184
- onPress={() => {
185
- navigation.push(ScreenNames.LivenessV2, {
186
- loan: item,
187
- });
188
- }}
189
- >
190
- {item?.step < 9 || item?.step === 100 ? (
191
- <IconStep3Disable />
192
- ) : item?.step === 9 ? (
193
- <IconStep3 />
194
- ) : (
195
- <IconStep3Success />
196
- )}
197
- <MText
198
- style={{
199
- textAlign: 'center',
200
- fontSize: 10,
201
- marginTop: 5,
202
- color:
203
- item?.step < 9 || item?.step === 100
204
- ? '#999999'
205
- : item?.step === 9
206
- ? '#EF592E'
207
- : '#333333',
208
- }}
209
- >
210
- EKYC
211
- </MText>
212
- </TouchableOpacity>
213
- <TouchableOpacity
214
- disabled={item?.step === 10 ? false : true}
215
- style={$action}
216
- onPress={() => {
217
- navigation.push(ScreenNames.TTSSignLoan, {
218
- loan: item,
219
- });
220
- }}
221
- >
222
- {item?.step < 10 || item?.step === 100 ? (
223
- <IconStep4Disable />
224
- ) : item?.step === 10 ? (
225
- <IconStep4 />
226
- ) : (
227
- <IconStep4Success />
228
- )}
229
- <MText
230
- style={{
231
- textAlign: 'center',
232
- fontSize: 10,
233
- marginTop: 5,
234
- color:
235
- item?.step < 10 || item?.step === 100
236
- ? '#999999'
237
- : item?.step === 10
238
- ? '#EF592E'
239
- : '#333333',
240
206
  }}
241
207
  >
242
- hợp{'\n'}đồng
243
- </MText>
244
- </TouchableOpacity>
245
- </View>
246
-
247
- {item?.step !== 11 ? (
248
- <View
249
- style={{
250
- backgroundColor: '#FFF3E9',
251
- flexDirection: 'row',
252
- alignItems: 'center',
253
- gap: 8,
254
- borderRadius: 4,
255
- paddingHorizontal: 8,
256
- paddingVertical: 10,
257
- marginTop: 16,
258
- }}
259
- >
260
- <MText
261
- style={{
262
- fontSize: 10,
263
- flex: 1,
208
+ {item?.step < 4 ? (
209
+ <IconStep2Disable />
210
+ ) : item?.step === 4 || item?.step === 5 || item?.step === 6 ? (
211
+ <IconStep2 />
212
+ ) : (
213
+ <IconStep2Success />
214
+ )}
215
+ <MText
216
+ style={{
217
+ textAlign: 'center',
218
+ fontSize: 10,
219
+ marginTop: 5,
220
+ color:
221
+ item?.step < 4
222
+ ? '#999999'
223
+ : item?.step === 4 || item?.step === 5 || item?.step === 6
224
+ ? '#EF592E'
225
+ : '#333333',
226
+ }}
227
+ >
228
+ Thông tin{'\n'}cá nhân
229
+ </MText>
230
+ </TouchableOpacity>
231
+ <TouchableOpacity
232
+ disabled={item?.step === 9 ? false : true}
233
+ style={$action}
234
+ onPress={() => {
235
+ navigation.push(ScreenNames.LivenessV2, {
236
+ loan: item,
237
+ });
264
238
  }}
265
239
  >
266
- Hướng dẫn các bước hoàn thiện đơn vay
267
- </MText>
268
- <TouchableOpacity onPress={() => setShowModal(true)}>
240
+ {item?.step < 9 || item?.step === 100 ? (
241
+ <IconStep3Disable />
242
+ ) : item?.step === 9 ? (
243
+ <IconStep3 />
244
+ ) : (
245
+ <IconStep3Success />
246
+ )}
269
247
  <MText
270
248
  style={{
249
+ textAlign: 'center',
271
250
  fontSize: 10,
272
- color: color.primary,
273
- textDecorationLine: 'underline',
251
+ marginTop: 5,
252
+ color:
253
+ item?.step < 9 || item?.step === 100
254
+ ? '#999999'
255
+ : item?.step === 9
256
+ ? '#EF592E'
257
+ : '#333333',
274
258
  }}
275
259
  >
276
- Xem thêm
260
+ EKYC
277
261
  </MText>
278
262
  </TouchableOpacity>
279
- </View>
280
- ) : (
281
- <View
282
- style={{
283
- backgroundColor: '#E8FFE9',
284
- flexDirection: 'row',
285
- alignItems: 'center',
286
- gap: 8,
287
- borderRadius: 4,
288
- paddingHorizontal: 8,
289
- paddingVertical: 10,
290
- marginTop: 16,
291
- }}
292
- >
293
- <IconTick />
294
- <MText style={{ color: '#28A745', fontSize: 10, flex: 1 }}>
295
- Hợp đồng đã ký thành công. Quý khách vui lòng chờ Chuyên viên tư vấn
296
- liên hệ để hoàn tất bước giải ngân.
297
- </MText>
298
- </View>
299
- )}
300
-
301
- {item?.step !== 11 ? (
302
- <View style={$row}>
303
- <View style={{ flex: 1, paddingRight: 24 }}>
263
+ <TouchableOpacity
264
+ disabled={item?.step === 10 ? false : true}
265
+ style={$action}
266
+ onPress={() => {
267
+ navigation.push(ScreenNames.TTSSignLoan, {
268
+ loan: item,
269
+ });
270
+ }}
271
+ >
272
+ {item?.step < 10 || item?.step === 100 ? (
273
+ <IconStep4Disable />
274
+ ) : item?.step === 10 ? (
275
+ <IconStep4 />
276
+ ) : (
277
+ <IconStep4Success />
278
+ )}
304
279
  <MText
305
280
  style={{
306
- color: '#999999',
307
- fontSize: 12,
281
+ textAlign: 'center',
282
+ fontSize: 10,
283
+ marginTop: 5,
284
+ color:
285
+ item?.step < 10 || item?.step === 100
286
+ ? '#999999'
287
+ : item?.step === 10
288
+ ? '#EF592E'
289
+ : '#333333',
308
290
  }}
309
291
  >
310
- Trạng thái
292
+ hợp{'\n'}đồng
311
293
  </MText>
294
+ </TouchableOpacity>
295
+ </View>
296
+
297
+ {item?.step !== 11 ? (
298
+ <View
299
+ style={{
300
+ backgroundColor: '#FFF3E9',
301
+ flexDirection: 'row',
302
+ alignItems: 'center',
303
+ gap: 8,
304
+ borderRadius: 4,
305
+ paddingHorizontal: 8,
306
+ paddingVertical: 10,
307
+ marginTop: 16,
308
+ }}
309
+ >
312
310
  <MText
313
311
  style={{
314
- fontSize: 12,
315
- fontWeight: 'bold',
312
+ fontSize: 10,
313
+ flex: 1,
316
314
  }}
317
315
  >
318
- {item?.step <= 1
319
- ? 'Chờ cập nhật thông tin tài sản'
320
- : item?.step === 3
321
- ? `Chờ cập nhật thông tin khoản vay`
322
- : item?.step === 4 || item?.step === 5 || item?.step === 6
323
- ? `Chờ cập nhật thông tin cá nhân`
324
- : item?.step === 9
325
- ? `Chờ cập nhật eKYC`
326
- : item?.step === 11
327
- ? `Hợp đồng đã ký thành công. Vui lòng chờ chuyên viên tư vấn liên hệ`
328
- : 'Đơn vay đang trong quá trình xử lý'}
316
+ Hướng dẫn các bước hoàn thiện đơn vay
329
317
  </MText>
318
+ <TouchableOpacity onPress={() => setShowModal(true)}>
319
+ <MText
320
+ style={{
321
+ fontSize: 10,
322
+ color: color.primary,
323
+ textDecorationLine: 'underline',
324
+ }}
325
+ >
326
+ Xem thêm
327
+ </MText>
328
+ </TouchableOpacity>
330
329
  </View>
331
- {item?.step <= 1 ? (
332
- <TouchableOpacity
333
- onPress={() => {
334
- if (item?.typeLoan === 7) {
335
- navigation.push(ScreenNames.LoanBuyCar, {
336
- loan: item,
337
- });
338
- } else {
339
- if (item?.step === 0) {
340
- navigation.push(ScreenNames.VehicleCamera, {
330
+ ) : (
331
+ <View
332
+ style={{
333
+ backgroundColor: '#E8FFE9',
334
+ flexDirection: 'row',
335
+ alignItems: 'center',
336
+ gap: 8,
337
+ borderRadius: 4,
338
+ paddingHorizontal: 8,
339
+ paddingVertical: 10,
340
+ marginTop: 16,
341
+ }}
342
+ >
343
+ <IconTick />
344
+ <MText style={{ color: '#28A745', fontSize: 10, flex: 1 }}>
345
+ Hợp đồng đã ký thành công. Quý khách vui lòng chờ Chuyên viên tư
346
+ vấn liên hệ để hoàn tất bước giải ngân.
347
+ </MText>
348
+ </View>
349
+ )}
350
+
351
+ {item?.step !== 11 ? (
352
+ <View style={$row}>
353
+ <View style={{ flex: 1, paddingRight: 24 }}>
354
+ <MText
355
+ style={{
356
+ color: '#999999',
357
+ fontSize: 12,
358
+ }}
359
+ >
360
+ Trạng thái
361
+ </MText>
362
+ <MText
363
+ style={{
364
+ fontSize: 12,
365
+ fontWeight: 'bold',
366
+ }}
367
+ >
368
+ {item?.step <= 1
369
+ ? 'Chờ cập nhật thông tin tài sản'
370
+ : item?.step === 3
371
+ ? `Chờ cập nhật thông tin khoản vay`
372
+ : item?.step === 4 || item?.step === 5 || item?.step === 6
373
+ ? `Chờ cập nhật thông tin cá nhân`
374
+ : item?.step === 9
375
+ ? `Chờ cập nhật eKYC`
376
+ : item?.step === 11
377
+ ? `Hợp đồng đã ký thành công. Vui lòng chờ chuyên viên tư vấn liên hệ`
378
+ : 'Đơn vay đang trong quá trình xử lý'}
379
+ </MText>
380
+ </View>
381
+ {item?.step <= 1 ? (
382
+ <TouchableOpacity
383
+ onPress={() => {
384
+ if (item?.typeLoan === 7) {
385
+ navigation.push(ScreenNames.LoanBuyCar, {
341
386
  loan: item,
342
- front: true,
343
387
  });
344
388
  } else {
345
- navigation.push(ScreenNames.AssetInformation, {
346
- loan: item,
347
- });
389
+ if (item?.step === 0) {
390
+ navigation.push(ScreenNames.VehicleCamera, {
391
+ loan: item,
392
+ front: true,
393
+ });
394
+ } else {
395
+ navigation.push(ScreenNames.AssetInformation, {
396
+ loan: item,
397
+ });
398
+ }
348
399
  }
349
- }
350
- }}
351
- >
352
- <LinearGradient
353
- colors={['#FF8E4F', '#EF592E']}
354
- style={{
355
- height: 30,
356
- alignItems: 'center',
357
- justifyContent: 'center',
358
- borderRadius: 24,
359
- paddingHorizontal: 10,
360
400
  }}
361
401
  >
362
- <MText
402
+ <LinearGradient
403
+ colors={['#FF8E4F', '#EF592E']}
363
404
  style={{
364
- color: 'white',
365
- fontSize: 12,
405
+ height: 30,
406
+ alignItems: 'center',
407
+ justifyContent: 'center',
408
+ borderRadius: 24,
409
+ paddingHorizontal: 10,
366
410
  }}
367
411
  >
368
- Cập nhật
369
- </MText>
370
- </LinearGradient>
371
- </TouchableOpacity>
372
- ) : item?.step === 3 ? (
373
- <TouchableOpacity
374
- onPress={() => {
375
- if (item?.step === 3) {
376
- navigation.push(ScreenNames.ReviewLoan, {
377
- loan: item,
378
- });
379
- }
380
- }}
381
- >
382
- <LinearGradient
383
- colors={['#FF8E4F', '#EF592E']}
384
- style={{
385
- height: 30,
386
- alignItems: 'center',
387
- justifyContent: 'center',
388
- borderRadius: 24,
389
- paddingHorizontal: 10,
412
+ <MText
413
+ style={{
414
+ color: 'white',
415
+ fontSize: 12,
416
+ }}
417
+ >
418
+ Cập nhật
419
+ </MText>
420
+ </LinearGradient>
421
+ </TouchableOpacity>
422
+ ) : item?.step === 3 ? (
423
+ <TouchableOpacity
424
+ onPress={() => {
425
+ if (item?.step === 3) {
426
+ navigation.push(ScreenNames.ReviewLoan, {
427
+ loan: item,
428
+ });
429
+ }
390
430
  }}
391
431
  >
392
- <MText
432
+ <LinearGradient
433
+ colors={['#FF8E4F', '#EF592E']}
393
434
  style={{
394
- color: 'white',
395
- fontSize: 12,
435
+ height: 30,
436
+ alignItems: 'center',
437
+ justifyContent: 'center',
438
+ borderRadius: 24,
439
+ paddingHorizontal: 10,
396
440
  }}
397
441
  >
398
- Cập nhật
399
- </MText>
400
- </LinearGradient>
401
- </TouchableOpacity>
402
- ) : item?.step === 4 || item?.step === 5 || item?.step === 6 ? (
403
- <TouchableOpacity
404
- onPress={() => {
405
- if (item?.step === 4) {
406
- navigation.push(ScreenNames.OCR, {
407
- loan: item,
408
- front: true,
409
- });
410
- } else if (item?.step === 5) {
411
- if (item?.typeLoan === 5) {
412
- navigation.push(ScreenNames.ReviewInformation, {
442
+ <MText
443
+ style={{
444
+ color: 'white',
445
+ fontSize: 12,
446
+ }}
447
+ >
448
+ Cập nhật
449
+ </MText>
450
+ </LinearGradient>
451
+ </TouchableOpacity>
452
+ ) : item?.step === 4 || item?.step === 5 || item?.step === 6 ? (
453
+ <TouchableOpacity
454
+ onPress={() => {
455
+ if (item?.step === 4) {
456
+ navigation.push(ScreenNames.OCR, {
413
457
  loan: item,
458
+ front: true,
414
459
  });
415
- } else {
416
- navigation.push(ScreenNames.TopupLoanInfo, {
460
+ } else if (item?.step === 5) {
461
+ if (item?.typeLoan === 5) {
462
+ navigation.push(ScreenNames.ReviewInformation, {
463
+ loan: item,
464
+ });
465
+ } else {
466
+ navigation.push(ScreenNames.TopupLoanInfo, {
467
+ loan: item,
468
+ });
469
+ }
470
+ } else if (item?.step === 6) {
471
+ navigation.push(ScreenNames.ReviewInformationOther, {
417
472
  loan: item,
418
473
  });
419
474
  }
420
- } else if (item?.step === 6) {
421
- navigation.push(ScreenNames.ReviewInformationOther, {
422
- loan: item,
423
- });
424
- }
425
- }}
426
- >
427
- <LinearGradient
428
- colors={['#FF8E4F', '#EF592E']}
429
- style={{
430
- height: 30,
431
- alignItems: 'center',
432
- justifyContent: 'center',
433
- borderRadius: 24,
434
- paddingHorizontal: 10,
435
475
  }}
436
476
  >
437
- <MText
477
+ <LinearGradient
478
+ colors={['#FF8E4F', '#EF592E']}
438
479
  style={{
439
- color: 'white',
440
- fontSize: 12,
480
+ height: 30,
481
+ alignItems: 'center',
482
+ justifyContent: 'center',
483
+ borderRadius: 24,
484
+ paddingHorizontal: 10,
441
485
  }}
442
486
  >
443
- Cập nhật
444
- </MText>
445
- </LinearGradient>
446
- </TouchableOpacity>
447
- ) : item?.step === 9 ? (
448
- <TouchableOpacity
449
- onPress={() => {
450
- navigation.push(ScreenNames.LivenessV2, {
451
- loan: item,
452
- });
453
- }}
454
- >
455
- <LinearGradient
456
- colors={['#FF8E4F', '#EF592E']}
457
- style={{
458
- height: 30,
459
- alignItems: 'center',
460
- justifyContent: 'center',
461
- borderRadius: 24,
462
- paddingHorizontal: 10,
487
+ <MText
488
+ style={{
489
+ color: 'white',
490
+ fontSize: 12,
491
+ }}
492
+ >
493
+ Cập nhật
494
+ </MText>
495
+ </LinearGradient>
496
+ </TouchableOpacity>
497
+ ) : item?.step === 9 ? (
498
+ <TouchableOpacity
499
+ onPress={() => {
500
+ navigation.push(ScreenNames.LivenessV2, {
501
+ loan: item,
502
+ });
463
503
  }}
464
504
  >
465
- <MText
505
+ <LinearGradient
506
+ colors={['#FF8E4F', '#EF592E']}
466
507
  style={{
467
- color: 'white',
468
- fontSize: 12,
508
+ height: 30,
509
+ alignItems: 'center',
510
+ justifyContent: 'center',
511
+ borderRadius: 24,
512
+ paddingHorizontal: 10,
469
513
  }}
470
514
  >
471
- Cập nhật
472
- </MText>
473
- </LinearGradient>
474
- </TouchableOpacity>
475
- ) : item?.step === 10 ? (
476
- <TouchableOpacity
477
- onPress={() => {
478
- navigation.push(ScreenNames.TTSSignLoan, {
479
- loan: item,
480
- });
481
- }}
482
- >
483
- <LinearGradient
484
- colors={['#FF8E4F', '#EF592E']}
485
- style={{
486
- height: 30,
487
- alignItems: 'center',
488
- justifyContent: 'center',
489
- borderRadius: 24,
490
- paddingHorizontal: 10,
515
+ <MText
516
+ style={{
517
+ color: 'white',
518
+ fontSize: 12,
519
+ }}
520
+ >
521
+ Cập nhật
522
+ </MText>
523
+ </LinearGradient>
524
+ </TouchableOpacity>
525
+ ) : item?.step === 10 ? (
526
+ <TouchableOpacity
527
+ onPress={() => {
528
+ navigation.push(ScreenNames.TTSSignLoan, {
529
+ loan: item,
530
+ });
491
531
  }}
492
532
  >
493
- <MText
533
+ <LinearGradient
534
+ colors={['#FF8E4F', '#EF592E']}
494
535
  style={{
495
- color: 'white',
496
- fontSize: 12,
536
+ height: 30,
537
+ alignItems: 'center',
538
+ justifyContent: 'center',
539
+ borderRadius: 24,
540
+ paddingHorizontal: 10,
497
541
  }}
498
542
  >
499
- Ký hợp đồng
500
- </MText>
501
- </LinearGradient>
502
- </TouchableOpacity>
503
- ) : (
504
- <></>
505
- )}
506
- </View>
507
- ) : (
508
- <></>
509
- )}
510
- {item?.step !== 11 ? (
543
+ <MText
544
+ style={{
545
+ color: 'white',
546
+ fontSize: 12,
547
+ }}
548
+ >
549
+ Ký hợp đồng
550
+ </MText>
551
+ </LinearGradient>
552
+ </TouchableOpacity>
553
+ ) : (
554
+ <></>
555
+ )}
556
+ </View>
557
+ ) : (
558
+ <></>
559
+ )}
560
+ {item?.step !== 11 ? (
561
+ <View
562
+ style={{
563
+ flexDirection: 'row',
564
+ alignItems: 'center',
565
+ gap: 8,
566
+ backgroundColor: '#FFF2F2',
567
+ marginHorizontal: -16,
568
+ paddingVertical: 10,
569
+ borderBottomRightRadius: 8,
570
+ borderBottomLeftRadius: 8,
571
+ paddingHorizontal: 10,
572
+ }}
573
+ >
574
+ <Info />
575
+ <MText
576
+ style={[
577
+ {
578
+ fontSize: 10,
579
+ color: '#E40010',
580
+ flex: 1,
581
+ },
582
+ ]}
583
+ >
584
+ {item?.step <= 1
585
+ ? 'Vui lòng cập nhật thông tin tài sản để được giải ngân sớm nhất!'
586
+ : item?.step === 3
587
+ ? `Vui lòng cập nhật thông tin khoản vay để được giải ngân sớm nhất!`
588
+ : item?.step === 4 || item?.step === 5 || item?.step === 6
589
+ ? `Vui lòng cập nhật thông tin cá nhân để được giải ngân sớm nhất!`
590
+ : item?.step === 9
591
+ ? `Bước cuối cùng rồi, vui lòng ký hợp đồng để được giải ngân sớm nhất nhé!`
592
+ : 'Đơn vay đang trong quá trình xử lý'}
593
+ </MText>
594
+ </View>
595
+ ) : (
596
+ <></>
597
+ )}
598
+ </View>
599
+ <Modal
600
+ visible={showModalInfo}
601
+ backdropColor={'rgba(0,0,0,0.5)'}
602
+ backdropOpacity={1}
603
+ >
511
604
  <View
512
605
  style={{
513
- flexDirection: 'row',
514
- alignItems: 'center',
515
- gap: 8,
516
- backgroundColor: '#FFF2F2',
517
- marginHorizontal: -16,
518
- paddingVertical: 10,
519
- borderBottomRightRadius: 8,
520
- borderBottomLeftRadius: 8,
521
- paddingHorizontal: 10,
606
+ borderRadius: 8,
607
+ backgroundColor: 'white',
522
608
  }}
523
609
  >
524
- <Info />
610
+ <Image
611
+ source={require('../../assets/tts/Banner.png')}
612
+ style={{
613
+ width: '100%',
614
+ borderTopLeftRadius: 8,
615
+ borderTopRightRadius: 8,
616
+ height: (Dimensions.get('window').height / 2) * 0.7,
617
+ resizeMode: 'cover',
618
+ }}
619
+ />
525
620
  <MText
526
- style={[
527
- {
528
- fontSize: 10,
529
- color: '#E40010',
530
- flex: 1,
531
- },
532
- ]}
621
+ style={{
622
+ fontSize: 16,
623
+ fontWeight: 'bold',
624
+ textAlign: 'center',
625
+ marginVertical: 16,
626
+ }}
533
627
  >
534
- {item?.step <= 1
535
- ? 'Vui lòng cập nhật thông tin tài sản để được giải ngân sớm nhất!'
536
- : item?.step === 3
537
- ? `Vui lòng cập nhật thông tin khoản vay để được giải ngân sớm nhất!`
538
- : item?.step === 4 || item?.step === 5 || item?.step === 6
539
- ? `Vui lòng cập nhật thông tin cá nhân để được giải ngân sớm nhất!`
540
- : item?.step === 9
541
- ? `Bước cuối cùng rồi, vui lòng ký hợp đồng để được giải ngân sớm nhất nhé!`
542
- : 'Đơn vay đang trong quá trình xử lý'}
628
+ Chúc mừng bạn!
543
629
  </MText>
630
+ <MText
631
+ style={{
632
+ textAlign: 'center',
633
+ paddingHorizontal: 16,
634
+ color: '#828282',
635
+ }}
636
+ >
637
+ Bạn đã được phê duyệt{' '}
638
+ <MText
639
+ style={{
640
+ color: '#EF592E',
641
+ fontWeight: 'bold',
642
+ }}
643
+ >
644
+ {item?.productNameTopup}
645
+ </MText>{' '}
646
+ với số tiền là{' '}
647
+ <MText
648
+ style={{
649
+ color: '#EF592E',
650
+ fontWeight: 'bold',
651
+ }}
652
+ >
653
+ {formatMoney(item?.loanAmount)}
654
+ </MText>{' '}
655
+ VNĐ! Vui lòng eKYC - hoàn thiện xác thực khuôn mặt và ký hợp đồng để
656
+ được giải ngân
657
+ </MText>
658
+ <TouchableOpacity
659
+ disabled={isLoading}
660
+ onPress={() => onConfirm(1)}
661
+ style={{
662
+ borderWidth: 1,
663
+ borderColor: '#EF592E',
664
+ borderRadius: 24,
665
+ paddingHorizontal: 16,
666
+ paddingVertical: 10,
667
+ alignSelf: 'center',
668
+ marginTop: 24,
669
+ }}
670
+ >
671
+ <MText
672
+ style={{
673
+ color: '#EF592E',
674
+ }}
675
+ >
676
+ Xác nhận khoản vay
677
+ </MText>
678
+ </TouchableOpacity>
679
+
680
+ <TouchableOpacity
681
+ disabled={isLoading}
682
+ onPress={() => onConfirm(2)}
683
+ style={{
684
+ paddingHorizontal: 16,
685
+ paddingVertical: 10,
686
+ alignSelf: 'center',
687
+ }}
688
+ >
689
+ <MText style={{ color: '#8E8E93' }}>Tôi cần vay số tiền khác</MText>
690
+ </TouchableOpacity>
691
+ <View
692
+ style={{
693
+ backgroundColor: '#EDF6FF',
694
+ paddingVertical: 8,
695
+ borderBottomLeftRadius: 8,
696
+ borderBottomRightRadius: 8,
697
+ marginTop: 16,
698
+ alignItems: 'center',
699
+ }}
700
+ >
701
+ <TouchableOpacity
702
+ onPress={() => {
703
+ setShowModalInfo(false);
704
+ setTimeout(() => {
705
+ navigation.push(ScreenNames.LoanInterestRate, {
706
+ loan: item,
707
+ });
708
+ }, 300);
709
+ }}
710
+ >
711
+ <MText style={{ color: '#2F80ED', fontSize: 12 }}>
712
+ Bảng biểu lãi phí đơn vay {`->`}
713
+ </MText>
714
+ </TouchableOpacity>
715
+ </View>
544
716
  </View>
545
- ) : (
546
- <></>
547
- )}
548
- </View>
717
+ </Modal>
718
+ </>
549
719
  );
550
720
  }
551
721
  const $action: ViewStyle = {