identification client ok
This commit is contained in:
parent
60020b1cf8
commit
1bec6cc74c
2
App.js
2
App.js
|
@ -51,6 +51,7 @@ import CreateIdentification from './screens/identification/createIdentification'
|
||||||
import WalletDetailUser from './screens/wallet/WalletDetailUser';
|
import WalletDetailUser from './screens/wallet/WalletDetailUser';
|
||||||
import WalletOptionSelect from './screens/wallet/WalletOptionSelect';
|
import WalletOptionSelect from './screens/wallet/WalletOptionSelect';
|
||||||
import ValidateIdentification from './screens/identification/validateIdentification';
|
import ValidateIdentification from './screens/identification/validateIdentification';
|
||||||
|
import CreateIdentificationUser from './screens/identification/CreateIdentificationUser';
|
||||||
|
|
||||||
const instructions = Platform.select({
|
const instructions = Platform.select({
|
||||||
ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
|
ios: 'Press Cmd+R to reload,\n' + 'Cmd+D or shake for dev menu',
|
||||||
|
@ -85,6 +86,7 @@ const AppStack = createDrawerNavigator({
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
walletSelect: WalletSelect,
|
walletSelect: WalletSelect,
|
||||||
|
createIdentificationUser: CreateIdentificationUser,
|
||||||
notificationview: Notifications,
|
notificationview: Notifications,
|
||||||
configuration: Configurations,
|
configuration: Configurations,
|
||||||
about: About,
|
about: About,
|
||||||
|
|
|
@ -132,6 +132,7 @@ android {
|
||||||
applicationId "com.ilinktest"
|
applicationId "com.ilinktest"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
|
missingDimensionStrategy 'react-native-camera', 'general'
|
||||||
versionCode 1
|
versionCode 1
|
||||||
versionName "1.0"
|
versionName "1.0"
|
||||||
multiDexEnabled true
|
multiDexEnabled true
|
||||||
|
|
|
@ -8,6 +8,10 @@
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.VIBRATE" />
|
<uses-permission android:name="android.permission.VIBRATE" />
|
||||||
<uses-permission android:name="android.permission.CALL_PHONE" />
|
<uses-permission android:name="android.permission.CALL_PHONE" />
|
||||||
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
|
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
|
||||||
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||||
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
|
|
||||||
<uses-sdk tools:overrideLibrary="com.shazam.android.widget.text.reflow" />
|
<uses-sdk tools:overrideLibrary="com.shazam.android.widget.text.reflow" />
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,788 @@
|
||||||
|
{
|
||||||
|
"glass": 61440,
|
||||||
|
"music": 61441,
|
||||||
|
"search": 61442,
|
||||||
|
"envelope-o": 61443,
|
||||||
|
"heart": 61444,
|
||||||
|
"star": 61445,
|
||||||
|
"star-o": 61446,
|
||||||
|
"user": 61447,
|
||||||
|
"film": 61448,
|
||||||
|
"th-large": 61449,
|
||||||
|
"th": 61450,
|
||||||
|
"th-list": 61451,
|
||||||
|
"check": 61452,
|
||||||
|
"remove": 61453,
|
||||||
|
"close": 61453,
|
||||||
|
"times": 61453,
|
||||||
|
"search-plus": 61454,
|
||||||
|
"search-minus": 61456,
|
||||||
|
"power-off": 61457,
|
||||||
|
"signal": 61458,
|
||||||
|
"gear": 61459,
|
||||||
|
"cog": 61459,
|
||||||
|
"trash-o": 61460,
|
||||||
|
"home": 61461,
|
||||||
|
"file-o": 61462,
|
||||||
|
"clock-o": 61463,
|
||||||
|
"road": 61464,
|
||||||
|
"download": 61465,
|
||||||
|
"arrow-circle-o-down": 61466,
|
||||||
|
"arrow-circle-o-up": 61467,
|
||||||
|
"inbox": 61468,
|
||||||
|
"play-circle-o": 61469,
|
||||||
|
"rotate-right": 61470,
|
||||||
|
"repeat": 61470,
|
||||||
|
"refresh": 61473,
|
||||||
|
"list-alt": 61474,
|
||||||
|
"lock": 61475,
|
||||||
|
"flag": 61476,
|
||||||
|
"headphones": 61477,
|
||||||
|
"volume-off": 61478,
|
||||||
|
"volume-down": 61479,
|
||||||
|
"volume-up": 61480,
|
||||||
|
"qrcode": 61481,
|
||||||
|
"barcode": 61482,
|
||||||
|
"tag": 61483,
|
||||||
|
"tags": 61484,
|
||||||
|
"book": 61485,
|
||||||
|
"bookmark": 61486,
|
||||||
|
"print": 61487,
|
||||||
|
"camera": 61488,
|
||||||
|
"font": 61489,
|
||||||
|
"bold": 61490,
|
||||||
|
"italic": 61491,
|
||||||
|
"text-height": 61492,
|
||||||
|
"text-width": 61493,
|
||||||
|
"align-left": 61494,
|
||||||
|
"align-center": 61495,
|
||||||
|
"align-right": 61496,
|
||||||
|
"align-justify": 61497,
|
||||||
|
"list": 61498,
|
||||||
|
"dedent": 61499,
|
||||||
|
"outdent": 61499,
|
||||||
|
"indent": 61500,
|
||||||
|
"video-camera": 61501,
|
||||||
|
"photo": 61502,
|
||||||
|
"image": 61502,
|
||||||
|
"picture-o": 61502,
|
||||||
|
"pencil": 61504,
|
||||||
|
"map-marker": 61505,
|
||||||
|
"adjust": 61506,
|
||||||
|
"tint": 61507,
|
||||||
|
"edit": 61508,
|
||||||
|
"pencil-square-o": 61508,
|
||||||
|
"share-square-o": 61509,
|
||||||
|
"check-square-o": 61510,
|
||||||
|
"arrows": 61511,
|
||||||
|
"step-backward": 61512,
|
||||||
|
"fast-backward": 61513,
|
||||||
|
"backward": 61514,
|
||||||
|
"play": 61515,
|
||||||
|
"pause": 61516,
|
||||||
|
"stop": 61517,
|
||||||
|
"forward": 61518,
|
||||||
|
"fast-forward": 61520,
|
||||||
|
"step-forward": 61521,
|
||||||
|
"eject": 61522,
|
||||||
|
"chevron-left": 61523,
|
||||||
|
"chevron-right": 61524,
|
||||||
|
"plus-circle": 61525,
|
||||||
|
"minus-circle": 61526,
|
||||||
|
"times-circle": 61527,
|
||||||
|
"check-circle": 61528,
|
||||||
|
"question-circle": 61529,
|
||||||
|
"info-circle": 61530,
|
||||||
|
"crosshairs": 61531,
|
||||||
|
"times-circle-o": 61532,
|
||||||
|
"check-circle-o": 61533,
|
||||||
|
"ban": 61534,
|
||||||
|
"arrow-left": 61536,
|
||||||
|
"arrow-right": 61537,
|
||||||
|
"arrow-up": 61538,
|
||||||
|
"arrow-down": 61539,
|
||||||
|
"mail-forward": 61540,
|
||||||
|
"share": 61540,
|
||||||
|
"expand": 61541,
|
||||||
|
"compress": 61542,
|
||||||
|
"plus": 61543,
|
||||||
|
"minus": 61544,
|
||||||
|
"asterisk": 61545,
|
||||||
|
"exclamation-circle": 61546,
|
||||||
|
"gift": 61547,
|
||||||
|
"leaf": 61548,
|
||||||
|
"fire": 61549,
|
||||||
|
"eye": 61550,
|
||||||
|
"eye-slash": 61552,
|
||||||
|
"warning": 61553,
|
||||||
|
"exclamation-triangle": 61553,
|
||||||
|
"plane": 61554,
|
||||||
|
"calendar": 61555,
|
||||||
|
"random": 61556,
|
||||||
|
"comment": 61557,
|
||||||
|
"magnet": 61558,
|
||||||
|
"chevron-up": 61559,
|
||||||
|
"chevron-down": 61560,
|
||||||
|
"retweet": 61561,
|
||||||
|
"shopping-cart": 61562,
|
||||||
|
"folder": 61563,
|
||||||
|
"folder-open": 61564,
|
||||||
|
"arrows-v": 61565,
|
||||||
|
"arrows-h": 61566,
|
||||||
|
"bar-chart-o": 61568,
|
||||||
|
"bar-chart": 61568,
|
||||||
|
"twitter-square": 61569,
|
||||||
|
"facebook-square": 61570,
|
||||||
|
"camera-retro": 61571,
|
||||||
|
"key": 61572,
|
||||||
|
"gears": 61573,
|
||||||
|
"cogs": 61573,
|
||||||
|
"comments": 61574,
|
||||||
|
"thumbs-o-up": 61575,
|
||||||
|
"thumbs-o-down": 61576,
|
||||||
|
"star-half": 61577,
|
||||||
|
"heart-o": 61578,
|
||||||
|
"sign-out": 61579,
|
||||||
|
"linkedin-square": 61580,
|
||||||
|
"thumb-tack": 61581,
|
||||||
|
"external-link": 61582,
|
||||||
|
"sign-in": 61584,
|
||||||
|
"trophy": 61585,
|
||||||
|
"github-square": 61586,
|
||||||
|
"upload": 61587,
|
||||||
|
"lemon-o": 61588,
|
||||||
|
"phone": 61589,
|
||||||
|
"square-o": 61590,
|
||||||
|
"bookmark-o": 61591,
|
||||||
|
"phone-square": 61592,
|
||||||
|
"twitter": 61593,
|
||||||
|
"facebook-f": 61594,
|
||||||
|
"facebook": 61594,
|
||||||
|
"github": 61595,
|
||||||
|
"unlock": 61596,
|
||||||
|
"credit-card": 61597,
|
||||||
|
"feed": 61598,
|
||||||
|
"rss": 61598,
|
||||||
|
"hdd-o": 61600,
|
||||||
|
"bullhorn": 61601,
|
||||||
|
"bell": 61683,
|
||||||
|
"certificate": 61603,
|
||||||
|
"hand-o-right": 61604,
|
||||||
|
"hand-o-left": 61605,
|
||||||
|
"hand-o-up": 61606,
|
||||||
|
"hand-o-down": 61607,
|
||||||
|
"arrow-circle-left": 61608,
|
||||||
|
"arrow-circle-right": 61609,
|
||||||
|
"arrow-circle-up": 61610,
|
||||||
|
"arrow-circle-down": 61611,
|
||||||
|
"globe": 61612,
|
||||||
|
"wrench": 61613,
|
||||||
|
"tasks": 61614,
|
||||||
|
"filter": 61616,
|
||||||
|
"briefcase": 61617,
|
||||||
|
"arrows-alt": 61618,
|
||||||
|
"group": 61632,
|
||||||
|
"users": 61632,
|
||||||
|
"chain": 61633,
|
||||||
|
"link": 61633,
|
||||||
|
"cloud": 61634,
|
||||||
|
"flask": 61635,
|
||||||
|
"cut": 61636,
|
||||||
|
"scissors": 61636,
|
||||||
|
"copy": 61637,
|
||||||
|
"files-o": 61637,
|
||||||
|
"paperclip": 61638,
|
||||||
|
"save": 61639,
|
||||||
|
"floppy-o": 61639,
|
||||||
|
"square": 61640,
|
||||||
|
"navicon": 61641,
|
||||||
|
"reorder": 61641,
|
||||||
|
"bars": 61641,
|
||||||
|
"list-ul": 61642,
|
||||||
|
"list-ol": 61643,
|
||||||
|
"strikethrough": 61644,
|
||||||
|
"underline": 61645,
|
||||||
|
"table": 61646,
|
||||||
|
"magic": 61648,
|
||||||
|
"truck": 61649,
|
||||||
|
"pinterest": 61650,
|
||||||
|
"pinterest-square": 61651,
|
||||||
|
"google-plus-square": 61652,
|
||||||
|
"google-plus": 61653,
|
||||||
|
"money": 61654,
|
||||||
|
"caret-down": 61655,
|
||||||
|
"caret-up": 61656,
|
||||||
|
"caret-left": 61657,
|
||||||
|
"caret-right": 61658,
|
||||||
|
"columns": 61659,
|
||||||
|
"unsorted": 61660,
|
||||||
|
"sort": 61660,
|
||||||
|
"sort-down": 61661,
|
||||||
|
"sort-desc": 61661,
|
||||||
|
"sort-up": 61662,
|
||||||
|
"sort-asc": 61662,
|
||||||
|
"envelope": 61664,
|
||||||
|
"linkedin": 61665,
|
||||||
|
"rotate-left": 61666,
|
||||||
|
"undo": 61666,
|
||||||
|
"legal": 61667,
|
||||||
|
"gavel": 61667,
|
||||||
|
"dashboard": 61668,
|
||||||
|
"tachometer": 61668,
|
||||||
|
"comment-o": 61669,
|
||||||
|
"comments-o": 61670,
|
||||||
|
"flash": 61671,
|
||||||
|
"bolt": 61671,
|
||||||
|
"sitemap": 61672,
|
||||||
|
"umbrella": 61673,
|
||||||
|
"paste": 61674,
|
||||||
|
"clipboard": 61674,
|
||||||
|
"lightbulb-o": 61675,
|
||||||
|
"exchange": 61676,
|
||||||
|
"cloud-download": 61677,
|
||||||
|
"cloud-upload": 61678,
|
||||||
|
"user-md": 61680,
|
||||||
|
"stethoscope": 61681,
|
||||||
|
"suitcase": 61682,
|
||||||
|
"bell-o": 61602,
|
||||||
|
"coffee": 61684,
|
||||||
|
"cutlery": 61685,
|
||||||
|
"file-text-o": 61686,
|
||||||
|
"building-o": 61687,
|
||||||
|
"hospital-o": 61688,
|
||||||
|
"ambulance": 61689,
|
||||||
|
"medkit": 61690,
|
||||||
|
"fighter-jet": 61691,
|
||||||
|
"beer": 61692,
|
||||||
|
"h-square": 61693,
|
||||||
|
"plus-square": 61694,
|
||||||
|
"angle-double-left": 61696,
|
||||||
|
"angle-double-right": 61697,
|
||||||
|
"angle-double-up": 61698,
|
||||||
|
"angle-double-down": 61699,
|
||||||
|
"angle-left": 61700,
|
||||||
|
"angle-right": 61701,
|
||||||
|
"angle-up": 61702,
|
||||||
|
"angle-down": 61703,
|
||||||
|
"desktop": 61704,
|
||||||
|
"laptop": 61705,
|
||||||
|
"tablet": 61706,
|
||||||
|
"mobile-phone": 61707,
|
||||||
|
"mobile": 61707,
|
||||||
|
"circle-o": 61708,
|
||||||
|
"quote-left": 61709,
|
||||||
|
"quote-right": 61710,
|
||||||
|
"spinner": 61712,
|
||||||
|
"circle": 61713,
|
||||||
|
"mail-reply": 61714,
|
||||||
|
"reply": 61714,
|
||||||
|
"github-alt": 61715,
|
||||||
|
"folder-o": 61716,
|
||||||
|
"folder-open-o": 61717,
|
||||||
|
"smile-o": 61720,
|
||||||
|
"frown-o": 61721,
|
||||||
|
"meh-o": 61722,
|
||||||
|
"gamepad": 61723,
|
||||||
|
"keyboard-o": 61724,
|
||||||
|
"flag-o": 61725,
|
||||||
|
"flag-checkered": 61726,
|
||||||
|
"terminal": 61728,
|
||||||
|
"code": 61729,
|
||||||
|
"mail-reply-all": 61730,
|
||||||
|
"reply-all": 61730,
|
||||||
|
"star-half-empty": 61731,
|
||||||
|
"star-half-full": 61731,
|
||||||
|
"star-half-o": 61731,
|
||||||
|
"location-arrow": 61732,
|
||||||
|
"crop": 61733,
|
||||||
|
"code-fork": 61734,
|
||||||
|
"unlink": 61735,
|
||||||
|
"chain-broken": 61735,
|
||||||
|
"question": 61736,
|
||||||
|
"info": 61737,
|
||||||
|
"exclamation": 61738,
|
||||||
|
"superscript": 61739,
|
||||||
|
"subscript": 61740,
|
||||||
|
"eraser": 61741,
|
||||||
|
"puzzle-piece": 61742,
|
||||||
|
"microphone": 61744,
|
||||||
|
"microphone-slash": 61745,
|
||||||
|
"shield": 61746,
|
||||||
|
"calendar-o": 61747,
|
||||||
|
"fire-extinguisher": 61748,
|
||||||
|
"rocket": 61749,
|
||||||
|
"maxcdn": 61750,
|
||||||
|
"chevron-circle-left": 61751,
|
||||||
|
"chevron-circle-right": 61752,
|
||||||
|
"chevron-circle-up": 61753,
|
||||||
|
"chevron-circle-down": 61754,
|
||||||
|
"html5": 61755,
|
||||||
|
"css3": 61756,
|
||||||
|
"anchor": 61757,
|
||||||
|
"unlock-alt": 61758,
|
||||||
|
"bullseye": 61760,
|
||||||
|
"ellipsis-h": 61761,
|
||||||
|
"ellipsis-v": 61762,
|
||||||
|
"rss-square": 61763,
|
||||||
|
"play-circle": 61764,
|
||||||
|
"ticket": 61765,
|
||||||
|
"minus-square": 61766,
|
||||||
|
"minus-square-o": 61767,
|
||||||
|
"level-up": 61768,
|
||||||
|
"level-down": 61769,
|
||||||
|
"check-square": 61770,
|
||||||
|
"pencil-square": 61771,
|
||||||
|
"external-link-square": 61772,
|
||||||
|
"share-square": 61773,
|
||||||
|
"compass": 61774,
|
||||||
|
"toggle-down": 61776,
|
||||||
|
"caret-square-o-down": 61776,
|
||||||
|
"toggle-up": 61777,
|
||||||
|
"caret-square-o-up": 61777,
|
||||||
|
"toggle-right": 61778,
|
||||||
|
"caret-square-o-right": 61778,
|
||||||
|
"euro": 61779,
|
||||||
|
"eur": 61779,
|
||||||
|
"gbp": 61780,
|
||||||
|
"dollar": 61781,
|
||||||
|
"usd": 61781,
|
||||||
|
"rupee": 61782,
|
||||||
|
"inr": 61782,
|
||||||
|
"cny": 61783,
|
||||||
|
"rmb": 61783,
|
||||||
|
"yen": 61783,
|
||||||
|
"jpy": 61783,
|
||||||
|
"ruble": 61784,
|
||||||
|
"rouble": 61784,
|
||||||
|
"rub": 61784,
|
||||||
|
"won": 61785,
|
||||||
|
"krw": 61785,
|
||||||
|
"bitcoin": 61786,
|
||||||
|
"btc": 61786,
|
||||||
|
"file": 61787,
|
||||||
|
"file-text": 61788,
|
||||||
|
"sort-alpha-asc": 61789,
|
||||||
|
"sort-alpha-desc": 61790,
|
||||||
|
"sort-amount-asc": 61792,
|
||||||
|
"sort-amount-desc": 61793,
|
||||||
|
"sort-numeric-asc": 61794,
|
||||||
|
"sort-numeric-desc": 61795,
|
||||||
|
"thumbs-up": 61796,
|
||||||
|
"thumbs-down": 61797,
|
||||||
|
"youtube-square": 61798,
|
||||||
|
"youtube": 61799,
|
||||||
|
"xing": 61800,
|
||||||
|
"xing-square": 61801,
|
||||||
|
"youtube-play": 61802,
|
||||||
|
"dropbox": 61803,
|
||||||
|
"stack-overflow": 61804,
|
||||||
|
"instagram": 61805,
|
||||||
|
"flickr": 61806,
|
||||||
|
"adn": 61808,
|
||||||
|
"bitbucket": 61809,
|
||||||
|
"bitbucket-square": 61810,
|
||||||
|
"tumblr": 61811,
|
||||||
|
"tumblr-square": 61812,
|
||||||
|
"long-arrow-down": 61813,
|
||||||
|
"long-arrow-up": 61814,
|
||||||
|
"long-arrow-left": 61815,
|
||||||
|
"long-arrow-right": 61816,
|
||||||
|
"apple": 61817,
|
||||||
|
"windows": 61818,
|
||||||
|
"android": 61819,
|
||||||
|
"linux": 61820,
|
||||||
|
"dribbble": 61821,
|
||||||
|
"skype": 61822,
|
||||||
|
"foursquare": 61824,
|
||||||
|
"trello": 61825,
|
||||||
|
"female": 61826,
|
||||||
|
"male": 61827,
|
||||||
|
"gittip": 61828,
|
||||||
|
"gratipay": 61828,
|
||||||
|
"sun-o": 61829,
|
||||||
|
"moon-o": 61830,
|
||||||
|
"archive": 61831,
|
||||||
|
"bug": 61832,
|
||||||
|
"vk": 61833,
|
||||||
|
"weibo": 61834,
|
||||||
|
"renren": 61835,
|
||||||
|
"pagelines": 61836,
|
||||||
|
"stack-exchange": 61837,
|
||||||
|
"arrow-circle-o-right": 61838,
|
||||||
|
"arrow-circle-o-left": 61840,
|
||||||
|
"toggle-left": 61841,
|
||||||
|
"caret-square-o-left": 61841,
|
||||||
|
"dot-circle-o": 61842,
|
||||||
|
"wheelchair": 61843,
|
||||||
|
"vimeo-square": 61844,
|
||||||
|
"turkish-lira": 61845,
|
||||||
|
"try": 61845,
|
||||||
|
"plus-square-o": 61846,
|
||||||
|
"space-shuttle": 61847,
|
||||||
|
"slack": 61848,
|
||||||
|
"envelope-square": 61849,
|
||||||
|
"wordpress": 61850,
|
||||||
|
"openid": 61851,
|
||||||
|
"institution": 61852,
|
||||||
|
"bank": 61852,
|
||||||
|
"university": 61852,
|
||||||
|
"mortar-board": 61853,
|
||||||
|
"graduation-cap": 61853,
|
||||||
|
"yahoo": 61854,
|
||||||
|
"google": 61856,
|
||||||
|
"reddit": 61857,
|
||||||
|
"reddit-square": 61858,
|
||||||
|
"stumbleupon-circle": 61859,
|
||||||
|
"stumbleupon": 61860,
|
||||||
|
"delicious": 61861,
|
||||||
|
"digg": 61862,
|
||||||
|
"pied-piper-pp": 61863,
|
||||||
|
"pied-piper-alt": 61864,
|
||||||
|
"drupal": 61865,
|
||||||
|
"joomla": 61866,
|
||||||
|
"language": 61867,
|
||||||
|
"fax": 61868,
|
||||||
|
"building": 61869,
|
||||||
|
"child": 61870,
|
||||||
|
"paw": 61872,
|
||||||
|
"spoon": 61873,
|
||||||
|
"cube": 61874,
|
||||||
|
"cubes": 61875,
|
||||||
|
"behance": 61876,
|
||||||
|
"behance-square": 61877,
|
||||||
|
"steam": 61878,
|
||||||
|
"steam-square": 61879,
|
||||||
|
"recycle": 61880,
|
||||||
|
"automobile": 61881,
|
||||||
|
"car": 61881,
|
||||||
|
"cab": 61882,
|
||||||
|
"taxi": 61882,
|
||||||
|
"tree": 61883,
|
||||||
|
"spotify": 61884,
|
||||||
|
"deviantart": 61885,
|
||||||
|
"soundcloud": 61886,
|
||||||
|
"database": 61888,
|
||||||
|
"file-pdf-o": 61889,
|
||||||
|
"file-word-o": 61890,
|
||||||
|
"file-excel-o": 61891,
|
||||||
|
"file-powerpoint-o": 61892,
|
||||||
|
"file-photo-o": 61893,
|
||||||
|
"file-picture-o": 61893,
|
||||||
|
"file-image-o": 61893,
|
||||||
|
"file-zip-o": 61894,
|
||||||
|
"file-archive-o": 61894,
|
||||||
|
"file-sound-o": 61895,
|
||||||
|
"file-audio-o": 61895,
|
||||||
|
"file-movie-o": 61896,
|
||||||
|
"file-video-o": 61896,
|
||||||
|
"file-code-o": 61897,
|
||||||
|
"vine": 61898,
|
||||||
|
"codepen": 61899,
|
||||||
|
"jsfiddle": 61900,
|
||||||
|
"life-bouy": 61901,
|
||||||
|
"life-buoy": 61901,
|
||||||
|
"life-saver": 61901,
|
||||||
|
"support": 61901,
|
||||||
|
"life-ring": 61901,
|
||||||
|
"circle-o-notch": 61902,
|
||||||
|
"ra": 61904,
|
||||||
|
"resistance": 61904,
|
||||||
|
"rebel": 61904,
|
||||||
|
"ge": 61905,
|
||||||
|
"empire": 61905,
|
||||||
|
"git-square": 61906,
|
||||||
|
"git": 61907,
|
||||||
|
"y-combinator-square": 61908,
|
||||||
|
"yc-square": 61908,
|
||||||
|
"hacker-news": 61908,
|
||||||
|
"tencent-weibo": 61909,
|
||||||
|
"qq": 61910,
|
||||||
|
"wechat": 61911,
|
||||||
|
"weixin": 61911,
|
||||||
|
"send": 61912,
|
||||||
|
"paper-plane": 61912,
|
||||||
|
"send-o": 61913,
|
||||||
|
"paper-plane-o": 61913,
|
||||||
|
"history": 61914,
|
||||||
|
"circle-thin": 61915,
|
||||||
|
"header": 61916,
|
||||||
|
"paragraph": 61917,
|
||||||
|
"sliders": 61918,
|
||||||
|
"share-alt": 61920,
|
||||||
|
"share-alt-square": 61921,
|
||||||
|
"bomb": 61922,
|
||||||
|
"soccer-ball-o": 61923,
|
||||||
|
"futbol-o": 61923,
|
||||||
|
"tty": 61924,
|
||||||
|
"binoculars": 61925,
|
||||||
|
"plug": 61926,
|
||||||
|
"slideshare": 61927,
|
||||||
|
"twitch": 61928,
|
||||||
|
"yelp": 61929,
|
||||||
|
"newspaper-o": 61930,
|
||||||
|
"wifi": 61931,
|
||||||
|
"calculator": 61932,
|
||||||
|
"paypal": 61933,
|
||||||
|
"google-wallet": 61934,
|
||||||
|
"cc-visa": 61936,
|
||||||
|
"cc-mastercard": 61937,
|
||||||
|
"cc-discover": 61938,
|
||||||
|
"cc-amex": 61939,
|
||||||
|
"cc-paypal": 61940,
|
||||||
|
"cc-stripe": 61941,
|
||||||
|
"bell-slash": 61942,
|
||||||
|
"bell-slash-o": 61943,
|
||||||
|
"trash": 61944,
|
||||||
|
"copyright": 61945,
|
||||||
|
"at": 61946,
|
||||||
|
"eyedropper": 61947,
|
||||||
|
"paint-brush": 61948,
|
||||||
|
"birthday-cake": 61949,
|
||||||
|
"area-chart": 61950,
|
||||||
|
"pie-chart": 61952,
|
||||||
|
"line-chart": 61953,
|
||||||
|
"lastfm": 61954,
|
||||||
|
"lastfm-square": 61955,
|
||||||
|
"toggle-off": 61956,
|
||||||
|
"toggle-on": 61957,
|
||||||
|
"bicycle": 61958,
|
||||||
|
"bus": 61959,
|
||||||
|
"ioxhost": 61960,
|
||||||
|
"angellist": 61961,
|
||||||
|
"cc": 61962,
|
||||||
|
"shekel": 61963,
|
||||||
|
"sheqel": 61963,
|
||||||
|
"ils": 61963,
|
||||||
|
"meanpath": 61964,
|
||||||
|
"buysellads": 61965,
|
||||||
|
"connectdevelop": 61966,
|
||||||
|
"dashcube": 61968,
|
||||||
|
"forumbee": 61969,
|
||||||
|
"leanpub": 61970,
|
||||||
|
"sellsy": 61971,
|
||||||
|
"shirtsinbulk": 61972,
|
||||||
|
"simplybuilt": 61973,
|
||||||
|
"skyatlas": 61974,
|
||||||
|
"cart-plus": 61975,
|
||||||
|
"cart-arrow-down": 61976,
|
||||||
|
"diamond": 61977,
|
||||||
|
"ship": 61978,
|
||||||
|
"user-secret": 61979,
|
||||||
|
"motorcycle": 61980,
|
||||||
|
"street-view": 61981,
|
||||||
|
"heartbeat": 61982,
|
||||||
|
"venus": 61985,
|
||||||
|
"mars": 61986,
|
||||||
|
"mercury": 61987,
|
||||||
|
"intersex": 61988,
|
||||||
|
"transgender": 61988,
|
||||||
|
"transgender-alt": 61989,
|
||||||
|
"venus-double": 61990,
|
||||||
|
"mars-double": 61991,
|
||||||
|
"venus-mars": 61992,
|
||||||
|
"mars-stroke": 61993,
|
||||||
|
"mars-stroke-v": 61994,
|
||||||
|
"mars-stroke-h": 61995,
|
||||||
|
"neuter": 61996,
|
||||||
|
"genderless": 61997,
|
||||||
|
"facebook-official": 62000,
|
||||||
|
"pinterest-p": 62001,
|
||||||
|
"whatsapp": 62002,
|
||||||
|
"server": 62003,
|
||||||
|
"user-plus": 62004,
|
||||||
|
"user-times": 62005,
|
||||||
|
"hotel": 62006,
|
||||||
|
"bed": 62006,
|
||||||
|
"viacoin": 62007,
|
||||||
|
"train": 62008,
|
||||||
|
"subway": 62009,
|
||||||
|
"medium": 62010,
|
||||||
|
"yc": 62011,
|
||||||
|
"y-combinator": 62011,
|
||||||
|
"optin-monster": 62012,
|
||||||
|
"opencart": 62013,
|
||||||
|
"expeditedssl": 62014,
|
||||||
|
"battery-4": 62016,
|
||||||
|
"battery": 62016,
|
||||||
|
"battery-full": 62016,
|
||||||
|
"battery-3": 62017,
|
||||||
|
"battery-three-quarters": 62017,
|
||||||
|
"battery-2": 62018,
|
||||||
|
"battery-half": 62018,
|
||||||
|
"battery-1": 62019,
|
||||||
|
"battery-quarter": 62019,
|
||||||
|
"battery-0": 62020,
|
||||||
|
"battery-empty": 62020,
|
||||||
|
"mouse-pointer": 62021,
|
||||||
|
"i-cursor": 62022,
|
||||||
|
"object-group": 62023,
|
||||||
|
"object-ungroup": 62024,
|
||||||
|
"sticky-note": 62025,
|
||||||
|
"sticky-note-o": 62026,
|
||||||
|
"cc-jcb": 62027,
|
||||||
|
"cc-diners-club": 62028,
|
||||||
|
"clone": 62029,
|
||||||
|
"balance-scale": 62030,
|
||||||
|
"hourglass-o": 62032,
|
||||||
|
"hourglass-1": 62033,
|
||||||
|
"hourglass-start": 62033,
|
||||||
|
"hourglass-2": 62034,
|
||||||
|
"hourglass-half": 62034,
|
||||||
|
"hourglass-3": 62035,
|
||||||
|
"hourglass-end": 62035,
|
||||||
|
"hourglass": 62036,
|
||||||
|
"hand-grab-o": 62037,
|
||||||
|
"hand-rock-o": 62037,
|
||||||
|
"hand-stop-o": 62038,
|
||||||
|
"hand-paper-o": 62038,
|
||||||
|
"hand-scissors-o": 62039,
|
||||||
|
"hand-lizard-o": 62040,
|
||||||
|
"hand-spock-o": 62041,
|
||||||
|
"hand-pointer-o": 62042,
|
||||||
|
"hand-peace-o": 62043,
|
||||||
|
"trademark": 62044,
|
||||||
|
"registered": 62045,
|
||||||
|
"creative-commons": 62046,
|
||||||
|
"gg": 62048,
|
||||||
|
"gg-circle": 62049,
|
||||||
|
"tripadvisor": 62050,
|
||||||
|
"odnoklassniki": 62051,
|
||||||
|
"odnoklassniki-square": 62052,
|
||||||
|
"get-pocket": 62053,
|
||||||
|
"wikipedia-w": 62054,
|
||||||
|
"safari": 62055,
|
||||||
|
"chrome": 62056,
|
||||||
|
"firefox": 62057,
|
||||||
|
"opera": 62058,
|
||||||
|
"internet-explorer": 62059,
|
||||||
|
"tv": 62060,
|
||||||
|
"television": 62060,
|
||||||
|
"contao": 62061,
|
||||||
|
"500px": 62062,
|
||||||
|
"amazon": 62064,
|
||||||
|
"calendar-plus-o": 62065,
|
||||||
|
"calendar-minus-o": 62066,
|
||||||
|
"calendar-times-o": 62067,
|
||||||
|
"calendar-check-o": 62068,
|
||||||
|
"industry": 62069,
|
||||||
|
"map-pin": 62070,
|
||||||
|
"map-signs": 62071,
|
||||||
|
"map-o": 62072,
|
||||||
|
"map": 62073,
|
||||||
|
"commenting": 62074,
|
||||||
|
"commenting-o": 62075,
|
||||||
|
"houzz": 62076,
|
||||||
|
"vimeo": 62077,
|
||||||
|
"black-tie": 62078,
|
||||||
|
"fonticons": 62080,
|
||||||
|
"reddit-alien": 62081,
|
||||||
|
"edge": 62082,
|
||||||
|
"credit-card-alt": 62083,
|
||||||
|
"codiepie": 62084,
|
||||||
|
"modx": 62085,
|
||||||
|
"fort-awesome": 62086,
|
||||||
|
"usb": 62087,
|
||||||
|
"product-hunt": 62088,
|
||||||
|
"mixcloud": 62089,
|
||||||
|
"scribd": 62090,
|
||||||
|
"pause-circle": 62091,
|
||||||
|
"pause-circle-o": 62092,
|
||||||
|
"stop-circle": 62093,
|
||||||
|
"stop-circle-o": 62094,
|
||||||
|
"shopping-bag": 62096,
|
||||||
|
"shopping-basket": 62097,
|
||||||
|
"hashtag": 62098,
|
||||||
|
"bluetooth": 62099,
|
||||||
|
"bluetooth-b": 62100,
|
||||||
|
"percent": 62101,
|
||||||
|
"gitlab": 62102,
|
||||||
|
"wpbeginner": 62103,
|
||||||
|
"wpforms": 62104,
|
||||||
|
"envira": 62105,
|
||||||
|
"universal-access": 62106,
|
||||||
|
"wheelchair-alt": 62107,
|
||||||
|
"question-circle-o": 62108,
|
||||||
|
"blind": 62109,
|
||||||
|
"audio-description": 62110,
|
||||||
|
"volume-control-phone": 62112,
|
||||||
|
"braille": 62113,
|
||||||
|
"assistive-listening-systems": 62114,
|
||||||
|
"asl-interpreting": 62115,
|
||||||
|
"american-sign-language-interpreting": 62115,
|
||||||
|
"deafness": 62116,
|
||||||
|
"hard-of-hearing": 62116,
|
||||||
|
"deaf": 62116,
|
||||||
|
"glide": 62117,
|
||||||
|
"glide-g": 62118,
|
||||||
|
"signing": 62119,
|
||||||
|
"sign-language": 62119,
|
||||||
|
"low-vision": 62120,
|
||||||
|
"viadeo": 62121,
|
||||||
|
"viadeo-square": 62122,
|
||||||
|
"snapchat": 62123,
|
||||||
|
"snapchat-ghost": 62124,
|
||||||
|
"snapchat-square": 62125,
|
||||||
|
"pied-piper": 62126,
|
||||||
|
"first-order": 62128,
|
||||||
|
"yoast": 62129,
|
||||||
|
"themeisle": 62130,
|
||||||
|
"google-plus-circle": 62131,
|
||||||
|
"google-plus-official": 62131,
|
||||||
|
"fa": 62132,
|
||||||
|
"font-awesome": 62132,
|
||||||
|
"handshake-o": 62133,
|
||||||
|
"envelope-open": 62134,
|
||||||
|
"envelope-open-o": 62135,
|
||||||
|
"linode": 62136,
|
||||||
|
"address-book": 62137,
|
||||||
|
"address-book-o": 62138,
|
||||||
|
"vcard": 62139,
|
||||||
|
"address-card": 62139,
|
||||||
|
"vcard-o": 62140,
|
||||||
|
"address-card-o": 62140,
|
||||||
|
"user-circle": 62141,
|
||||||
|
"user-circle-o": 62142,
|
||||||
|
"user-o": 62144,
|
||||||
|
"id-badge": 62145,
|
||||||
|
"drivers-license": 62146,
|
||||||
|
"id-card": 62146,
|
||||||
|
"drivers-license-o": 62147,
|
||||||
|
"id-card-o": 62147,
|
||||||
|
"quora": 62148,
|
||||||
|
"free-code-camp": 62149,
|
||||||
|
"telegram": 62150,
|
||||||
|
"thermometer-4": 62151,
|
||||||
|
"thermometer": 62151,
|
||||||
|
"thermometer-full": 62151,
|
||||||
|
"thermometer-3": 62152,
|
||||||
|
"thermometer-three-quarters": 62152,
|
||||||
|
"thermometer-2": 62153,
|
||||||
|
"thermometer-half": 62153,
|
||||||
|
"thermometer-1": 62154,
|
||||||
|
"thermometer-quarter": 62154,
|
||||||
|
"thermometer-0": 62155,
|
||||||
|
"thermometer-empty": 62155,
|
||||||
|
"shower": 62156,
|
||||||
|
"bathtub": 62157,
|
||||||
|
"s15": 62157,
|
||||||
|
"bath": 62157,
|
||||||
|
"podcast": 62158,
|
||||||
|
"window-maximize": 62160,
|
||||||
|
"window-minimize": 62161,
|
||||||
|
"window-restore": 62162,
|
||||||
|
"times-rectangle": 62163,
|
||||||
|
"window-close": 62163,
|
||||||
|
"times-rectangle-o": 62164,
|
||||||
|
"window-close-o": 62164,
|
||||||
|
"bandcamp": 62165,
|
||||||
|
"grav": 62166,
|
||||||
|
"etsy": 62167,
|
||||||
|
"imdb": 62168,
|
||||||
|
"ravelry": 62169,
|
||||||
|
"eercast": 62170,
|
||||||
|
"microchip": 62171,
|
||||||
|
"snowflake-o": 62172,
|
||||||
|
"superpowers": 62173,
|
||||||
|
"wpexplorer": 62174,
|
||||||
|
"meetup": 62176
|
||||||
|
}
|
|
@ -34,5 +34,6 @@
|
||||||
"walletSelect": "walletSelect",
|
"walletSelect": "walletSelect",
|
||||||
"walletOptionSelect": "walletOptionSelect",
|
"walletOptionSelect": "walletOptionSelect",
|
||||||
"createIdentification": "createIdentification",
|
"createIdentification": "createIdentification",
|
||||||
|
"createIdentificationUser": "createIdentificationUser",
|
||||||
"validateIdentification": "validateIdentification"
|
"validateIdentification": "validateIdentification"
|
||||||
}
|
}
|
||||||
|
|
|
@ -129,6 +129,7 @@
|
||||||
"ADDRESS": "Address",
|
"ADDRESS": "Address",
|
||||||
"CREDIT": "Credit",
|
"CREDIT": "Credit",
|
||||||
"NEXT": "Next",
|
"NEXT": "Next",
|
||||||
|
"PREVIOUS": "Previous",
|
||||||
"SPONSOR_CODE": "Sponsor Code",
|
"SPONSOR_CODE": "Sponsor Code",
|
||||||
"SOLDE_UNVAIBLE": "solde unavailable",
|
"SOLDE_UNVAIBLE": "solde unavailable",
|
||||||
"TEXT_BIG_CREATE_AGENT_1": "Register as Agent",
|
"TEXT_BIG_CREATE_AGENT_1": "Register as Agent",
|
||||||
|
@ -184,6 +185,8 @@
|
||||||
"TRANSFER_COMMISSION_IMPOSSIBLE": "Commissions transfer impossible",
|
"TRANSFER_COMMISSION_IMPOSSIBLE": "Commissions transfer impossible",
|
||||||
"ERROR_FILTER_TEXT": "Problem encountered while filtering.",
|
"ERROR_FILTER_TEXT": "Problem encountered while filtering.",
|
||||||
"ERROR_TREATMENT_DEMAND": "Request processing error",
|
"ERROR_TREATMENT_DEMAND": "Request processing error",
|
||||||
|
"ERROR_IDENTIFICATION": "Identification error",
|
||||||
|
"SUCCESS_IDENTIFICATION": "Identification successful",
|
||||||
"REFUSER_DEMANDE": "Reject the request",
|
"REFUSER_DEMANDE": "Reject the request",
|
||||||
"ACCEPTER_DEMANDE": "Accept the request",
|
"ACCEPTER_DEMANDE": "Accept the request",
|
||||||
"REFUSED": "Refuse",
|
"REFUSED": "Refuse",
|
||||||
|
|
|
@ -133,6 +133,7 @@
|
||||||
"ADDRESS": "Adresse",
|
"ADDRESS": "Adresse",
|
||||||
"CREDIT": "Crédit",
|
"CREDIT": "Crédit",
|
||||||
"NEXT": "Suivant",
|
"NEXT": "Suivant",
|
||||||
|
"PREVIOUS": "Précédent",
|
||||||
"SPONSOR_CODE": "Code parrain",
|
"SPONSOR_CODE": "Code parrain",
|
||||||
"SOLDE_UNVAIBLE": "solde non disponible",
|
"SOLDE_UNVAIBLE": "solde non disponible",
|
||||||
"TEXT_BIG_CREATE_AGENT_1": "Inscrivez-vous en comme Agent",
|
"TEXT_BIG_CREATE_AGENT_1": "Inscrivez-vous en comme Agent",
|
||||||
|
@ -189,6 +190,8 @@
|
||||||
"TRANSFER_COMMISSION_IMPOSSIBLE": "Transfert des commissions impossible",
|
"TRANSFER_COMMISSION_IMPOSSIBLE": "Transfert des commissions impossible",
|
||||||
"ERROR_FILTER_TEXT": "Probleme rencontré lors du filtrage.",
|
"ERROR_FILTER_TEXT": "Probleme rencontré lors du filtrage.",
|
||||||
"ERROR_TREATMENT_DEMAND": "Erreur de traitement de la demande",
|
"ERROR_TREATMENT_DEMAND": "Erreur de traitement de la demande",
|
||||||
|
"ERROR_IDENTIFICATION": "Erreur d'identification",
|
||||||
|
"SUCCESS_IDENTIFICATION": "Identification réussie",
|
||||||
"REFUSER_DEMANDE": "Refuser la demande",
|
"REFUSER_DEMANDE": "Refuser la demande",
|
||||||
"REFUSED": "Refusé",
|
"REFUSED": "Refusé",
|
||||||
"ACCEPTER_DEMANDE": "Accepter la demande",
|
"ACCEPTER_DEMANDE": "Accepter la demande",
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
import React, { PureComponent } from 'react';
|
||||||
|
import { RNCamera } from 'react-native-camera';
|
||||||
|
|
||||||
|
import Icon from 'react-native-vector-icons/dist/FontAwesome';
|
||||||
|
import { TouchableOpacity, Alert, StyleSheet } from 'react-native';
|
||||||
|
|
||||||
|
|
||||||
|
export default class Camera extends PureComponent {
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = {
|
||||||
|
takingPic: false,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
takePicture = async () => {
|
||||||
|
if (this.camera && !this.state.takingPic) {
|
||||||
|
|
||||||
|
let options = {
|
||||||
|
quality: 0.85,
|
||||||
|
fixOrientation: true,
|
||||||
|
forceUpOrientation: true,
|
||||||
|
};
|
||||||
|
|
||||||
|
this.setState({ takingPic: true });
|
||||||
|
|
||||||
|
try {
|
||||||
|
const data = await this.camera.takePictureAsync(options);
|
||||||
|
this.props.onPicture(data);
|
||||||
|
} catch (err) {
|
||||||
|
Alert.alert('Error', 'Failed to take picture: ' + (err.message || err));
|
||||||
|
return;
|
||||||
|
} finally {
|
||||||
|
this.setState({ takingPic: false });
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
render() {
|
||||||
|
return (
|
||||||
|
<RNCamera
|
||||||
|
ref={ref => {
|
||||||
|
this.camera = ref;
|
||||||
|
}}
|
||||||
|
captureAudio={false}
|
||||||
|
style={{ flex: 1 }}
|
||||||
|
type={RNCamera.Constants.Type.back}
|
||||||
|
androidCameraPermissionOptions={{
|
||||||
|
title: 'Permission to use camera',
|
||||||
|
message: 'We need your permission to use your camera',
|
||||||
|
buttonPositive: 'Ok',
|
||||||
|
buttonNegative: 'Cancel',
|
||||||
|
}}>
|
||||||
|
<TouchableOpacity
|
||||||
|
activeOpacity={0.5}
|
||||||
|
style={styles.btnAlignment}
|
||||||
|
onPress={this.takePicture}>
|
||||||
|
<Icon name="camera" size={50} color="#fff" />
|
||||||
|
</TouchableOpacity>
|
||||||
|
</RNCamera>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
btnAlignment: {
|
||||||
|
flex: 1,
|
||||||
|
flexDirection: 'column',
|
||||||
|
justifyContent: 'flex-end',
|
||||||
|
alignItems: 'center',
|
||||||
|
marginBottom: 20,
|
||||||
|
},
|
||||||
|
});
|
File diff suppressed because one or more lines are too long
|
@ -39,6 +39,23 @@
|
||||||
</dict>
|
</dict>
|
||||||
<key>NSLocationWhenInUseUsageDescription</key>
|
<key>NSLocationWhenInUseUsageDescription</key>
|
||||||
<string/>
|
<string/>
|
||||||
|
<key>NSCameraUsageDescription</key>
|
||||||
|
<string>ReactNativeCamera</string>
|
||||||
|
<!-- Required with iOS 10 and higher -->
|
||||||
|
<key>NSCameraUsageDescription</key>
|
||||||
|
<string>Your message to user when the camera is accessed for the first time</string>
|
||||||
|
|
||||||
|
<!-- Required with iOS 11 and higher: include this only if you are planning to use the camera roll -->
|
||||||
|
<key>NSPhotoLibraryAddUsageDescription</key>
|
||||||
|
<string>Your message to user when the photo library is accessed for the first time</string>
|
||||||
|
|
||||||
|
<!-- Include this only if you are planning to use the camera roll -->
|
||||||
|
<key>NSPhotoLibraryUsageDescription</key>
|
||||||
|
<string>Your message to user when the photo library is accessed for the first time</string>
|
||||||
|
|
||||||
|
<!-- Include this only if you are planning to use the microphone for video recording -->
|
||||||
|
<key>NSMicrophoneUsageDescription</key>
|
||||||
|
<string>Your message to user when the microphone is accessed for the first time</string>
|
||||||
<key>UILaunchStoryboardName</key>
|
<key>UILaunchStoryboardName</key>
|
||||||
<string>LaunchScreen</string>
|
<string>LaunchScreen</string>
|
||||||
<key>UIRequiredDeviceCapabilities</key>
|
<key>UIRequiredDeviceCapabilities</key>
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
"react-native-blur-overlay": "^1.0.6",
|
"react-native-blur-overlay": "^1.0.6",
|
||||||
"react-native-bottom-sheet-behavior": "^2.0.0",
|
"react-native-bottom-sheet-behavior": "^2.0.0",
|
||||||
"react-native-calendario": "^0.2.10",
|
"react-native-calendario": "^0.2.10",
|
||||||
|
"react-native-camera": "^3.30.0",
|
||||||
"react-native-cardview": "^2.0.2",
|
"react-native-cardview": "^2.0.2",
|
||||||
"react-native-copilot": "^2.4.3",
|
"react-native-copilot": "^2.4.3",
|
||||||
"react-native-credit-card-input": "^0.4.1",
|
"react-native-credit-card-input": "^0.4.1",
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import { CREATE_IDENTIFICATION_PENDING, CREATE_IDENTIFICATION_SUCCESS, CREATE_IDENTIFICATION_ERROR, CREATE_IDENTIFICATION_RESET } from "../types/IdentificationType";
|
import { CREATE_IDENTIFICATION_PENDING, CREATE_IDENTIFICATION_SUCCESS, CREATE_IDENTIFICATION_ERROR, CREATE_IDENTIFICATION_RESET, GET_NUMBER_DETAIL_PENDING, GET_NUMBER_DETAIL_SUCCESS, GET_NUMBER_DETAIL_ERROR, GET_NUMBER_DETAIL_RESET } from "../types/IdentificationType";
|
||||||
|
|
||||||
export const fetchCreateIdentificationPending = () => ({
|
export const fetchCreateIdentificationPending = () => ({
|
||||||
type: CREATE_IDENTIFICATION_PENDING
|
type: CREATE_IDENTIFICATION_PENDING
|
||||||
|
@ -17,3 +17,21 @@ export const fetchCreateIdentificationError = (error) => ({
|
||||||
export const fetchCreateIdentificationReset = () => ({
|
export const fetchCreateIdentificationReset = () => ({
|
||||||
type: CREATE_IDENTIFICATION_RESET
|
type: CREATE_IDENTIFICATION_RESET
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export const fetchGetNumberInformationPending = () => ({
|
||||||
|
type: GET_NUMBER_DETAIL_PENDING
|
||||||
|
});
|
||||||
|
|
||||||
|
export const fetchGetNumberInformationSuccess = (res) => ({
|
||||||
|
type: GET_NUMBER_DETAIL_SUCCESS,
|
||||||
|
result: res,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const fetchGetNumberInformationError = (error) => ({
|
||||||
|
type: GET_NUMBER_DETAIL_ERROR,
|
||||||
|
result: error
|
||||||
|
});
|
||||||
|
|
||||||
|
export const fetchGetNumberInformationReset = () => ({
|
||||||
|
type: GET_NUMBER_DETAIL_RESET
|
||||||
|
});
|
|
@ -0,0 +1,33 @@
|
||||||
|
import { GET_NUMBER_DETAIL_PENDING, GET_NUMBER_DETAIL_SUCCESS, GET_NUMBER_DETAIL_ERROR, GET_NUMBER_DETAIL_RESET } from "../types/IdentificationType";
|
||||||
|
|
||||||
|
const initialState = {
|
||||||
|
loading: false,
|
||||||
|
result: null,
|
||||||
|
error: null
|
||||||
|
};
|
||||||
|
|
||||||
|
export default (state = initialState, action) => {
|
||||||
|
switch (action.type) {
|
||||||
|
case GET_NUMBER_DETAIL_PENDING: return {
|
||||||
|
...state,
|
||||||
|
loading: true
|
||||||
|
}
|
||||||
|
case GET_NUMBER_DETAIL_SUCCESS: return {
|
||||||
|
...state,
|
||||||
|
loading: false,
|
||||||
|
result: action.result.data,
|
||||||
|
error: null
|
||||||
|
}
|
||||||
|
case GET_NUMBER_DETAIL_ERROR: return {
|
||||||
|
...state,
|
||||||
|
loading: false,
|
||||||
|
result: null,
|
||||||
|
error: action.result
|
||||||
|
}
|
||||||
|
case GET_NUMBER_DETAIL_RESET: return initialState;
|
||||||
|
|
||||||
|
default: {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
|
@ -9,6 +9,7 @@ import WalletGetCommissionReducer from "./WalletGetCommissionReducer";
|
||||||
import walletHistoryReducer from "./WalletTransactionHistoryReducer";
|
import walletHistoryReducer from "./WalletTransactionHistoryReducer";
|
||||||
import walletTransferCommissionReducer from "./WalletTransferCommission";
|
import walletTransferCommissionReducer from "./WalletTransferCommission";
|
||||||
import CreateIdentificationReducer from "./IdentificationReducer";
|
import CreateIdentificationReducer from "./IdentificationReducer";
|
||||||
|
import GetNumberInformation from "./GetNumberInformation";
|
||||||
import { persistCombineReducers } from "redux-persist";
|
import { persistCombineReducers } from "redux-persist";
|
||||||
import { AsyncStorage } from "react-native";
|
import { AsyncStorage } from "react-native";
|
||||||
|
|
||||||
|
@ -29,7 +30,8 @@ const rootReducer = persistCombineReducers(persistConfig, {
|
||||||
creditTreatDemandReducer: creditTreatDemandReducer,
|
creditTreatDemandReducer: creditTreatDemandReducer,
|
||||||
creditCancelDemandReducer: creditCancelDemandReducer,
|
creditCancelDemandReducer: creditCancelDemandReducer,
|
||||||
walletGetCommission: WalletGetCommissionReducer,
|
walletGetCommission: WalletGetCommissionReducer,
|
||||||
createIdentificationReducer: CreateIdentificationReducer
|
createIdentificationReducer: CreateIdentificationReducer,
|
||||||
|
getNumberInformationReducer: GetNumberInformation
|
||||||
});
|
});
|
||||||
|
|
||||||
export default rootReducer;
|
export default rootReducer;
|
|
@ -2,3 +2,8 @@ export const CREATE_IDENTIFICATION_PENDING = 'CREATE_IDENTIFICATION_PENDING';
|
||||||
export const CREATE_IDENTIFICATION_SUCCESS = 'CREATE_IDENTIFICATION_SUCCESS';
|
export const CREATE_IDENTIFICATION_SUCCESS = 'CREATE_IDENTIFICATION_SUCCESS';
|
||||||
export const CREATE_IDENTIFICATION_ERROR = 'CREATE_IDENTIFICATION_ERROR';
|
export const CREATE_IDENTIFICATION_ERROR = 'CREATE_IDENTIFICATION_ERROR';
|
||||||
export const CREATE_IDENTIFICATION_RESET = 'CREATE_IDENTIFICATION_RESET';
|
export const CREATE_IDENTIFICATION_RESET = 'CREATE_IDENTIFICATION_RESET';
|
||||||
|
|
||||||
|
export const GET_NUMBER_DETAIL_PENDING = 'GET_NUMBER_DETAIL_PENDING';
|
||||||
|
export const GET_NUMBER_DETAIL_SUCCESS = 'GET_NUMBER_DETAIL_SUCCESS';
|
||||||
|
export const GET_NUMBER_DETAIL_ERROR = 'GET_NUMBER_DETAIL_ERROR';
|
||||||
|
export const GET_NUMBER_DETAIL_RESET = 'GET_NUMBER_DETAIL_RESET';
|
|
@ -34,5 +34,6 @@
|
||||||
"walletSelect": "walletSelect",
|
"walletSelect": "walletSelect",
|
||||||
"walletOptionSelect": "walletOptionSelect",
|
"walletOptionSelect": "walletOptionSelect",
|
||||||
"createIdentification": "createIdentification",
|
"createIdentification": "createIdentification",
|
||||||
|
"createIdentificationUser": "createIdentificationUser",
|
||||||
"validateIdentification": "validateIdentification"
|
"validateIdentification": "validateIdentification"
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,625 @@
|
||||||
|
import React, { Component } from 'react';
|
||||||
|
import { Alert, ActivityIndicator, StyleSheet, Text, View, Image, ScrollView, Platform, ProgressBarAndroid, PermissionsAndroid, Keyboard } from 'react-native';
|
||||||
|
import PropTypes from 'prop-types';
|
||||||
|
import FontAwesomeIcon from 'react-native-vector-icons/FontAwesome';
|
||||||
|
import Ionicons from 'react-native-vector-icons/Ionicons';
|
||||||
|
import Icon from 'react-native-vector-icons/MaterialIcons';
|
||||||
|
import { responsiveHeight, responsiveWidth, responsiveFontSize } from 'react-native-responsive-dimensions';
|
||||||
|
import { Fumi, Kaede } from 'react-native-textinput-effects'
|
||||||
|
import * as Animatable from 'react-native-animatable';
|
||||||
|
import Button from 'apsl-react-native-button';
|
||||||
|
let theme = require('./../../utils/theme.json');
|
||||||
|
let route = require('./../../route.json');
|
||||||
|
import I18n from 'react-native-i18n';
|
||||||
|
import isEqual from 'lodash/isEqual';
|
||||||
|
import isNil from 'lodash/isNil';
|
||||||
|
import { Color } from '../../config/Color';
|
||||||
|
import DateTimePicker from '@react-native-community/datetimepicker';
|
||||||
|
import { Dropdown } from 'react-native-material-dropdown';
|
||||||
|
import { getPositionInformation } from './../../webservice/MapService';
|
||||||
|
import { ProgressDialog } from 'react-native-simple-dialogs';
|
||||||
|
import { getCountryNetwork, createGeolocatedAccount, createUserAccount, getTownInformationName, getListCountriesActive, getCodeInformation, readUser } from './../../webservice/AuthApi';
|
||||||
|
import { SinglePickerMaterialDialog, MultiPickerMaterialDialog, MaterialDialog } from "react-native-material-dialog";
|
||||||
|
import Geolocation from 'react-native-geolocation-service';
|
||||||
|
import { identityPieces } from '../../utils/UtilsFunction';
|
||||||
|
import { connect } from 'react-redux';
|
||||||
|
import { bindActionCreators } from 'redux';
|
||||||
|
import { createIndentificationAction, createIndentificationResetAction } from '../../webservice/IdentificationApi';
|
||||||
|
const GEOLOCATION_OPTIONS = { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000, useSignificantChanges: true };
|
||||||
|
const moment = require('moment');
|
||||||
|
|
||||||
|
class CreateIdentificationUser extends Component {
|
||||||
|
static navigatorStyle = {
|
||||||
|
navBarBackgroundColor: Color.primaryColor,
|
||||||
|
statusBarColor: Color.primaryDarkColor,
|
||||||
|
navBarTextColor: '#FFFFFF',
|
||||||
|
navBarButtonColor: '#FFFFFF'
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
static navigationOptions = () => {
|
||||||
|
return {
|
||||||
|
drawerLabel: () => null,
|
||||||
|
headerTitle: I18n.t('CREATION_IDENTIFICATION_DESCRIPTION'),
|
||||||
|
headerTintColor: 'white',
|
||||||
|
headerStyle: {
|
||||||
|
backgroundColor: Color.primaryColor,
|
||||||
|
marginTop: 0,
|
||||||
|
color: 'white'
|
||||||
|
},
|
||||||
|
headerTitleStyle: {
|
||||||
|
color: "white"
|
||||||
|
},
|
||||||
|
title: I18n.t('CREATION_IDENTIFICATION_DESCRIPTION')
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
constructor(props) {
|
||||||
|
super(props);
|
||||||
|
this.state = {
|
||||||
|
lastname: '',
|
||||||
|
numeroIdentite: null,
|
||||||
|
dateNaissance: null,
|
||||||
|
dateExpiration: null,
|
||||||
|
networksinglePickerVisible: false,
|
||||||
|
isLoging: false,
|
||||||
|
countries: [],
|
||||||
|
town: [],
|
||||||
|
townName: null,
|
||||||
|
country: null,
|
||||||
|
identityPieces: identityPieces(),
|
||||||
|
identityPiecesName: (identityPieces()[0]).name,
|
||||||
|
snackVisible: false,
|
||||||
|
snackText: '',
|
||||||
|
disableNetwork: false,
|
||||||
|
networks: [],
|
||||||
|
showPickerDateNaissance: false,
|
||||||
|
showPickerDateExpiration: false,
|
||||||
|
modalVisible: true,
|
||||||
|
select_network: I18n.t("SELECT_NETWORK"),
|
||||||
|
user: null,
|
||||||
|
triggerSubmitClick: false
|
||||||
|
};
|
||||||
|
this.dateNaissanceFumiProps = {};
|
||||||
|
this.dateExpirationFumiProps = {};
|
||||||
|
this.props.createIndentificationResetAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
componentDidMount() {
|
||||||
|
|
||||||
|
readUser().then((user) => {
|
||||||
|
if (user) {
|
||||||
|
if (user !== undefined) {
|
||||||
|
this.setState({
|
||||||
|
user,
|
||||||
|
lastname: `${user.firstname} ${user.lastname}`
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (Platform.OS === 'android') {
|
||||||
|
this.requestCameraPermission();
|
||||||
|
} else {
|
||||||
|
this.watchLocation();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
renderCreateIdentificationResponse() {
|
||||||
|
const { result, error } = this.props;
|
||||||
|
|
||||||
|
console.log("PROPS", this.props);
|
||||||
|
|
||||||
|
if (result !== null) {
|
||||||
|
if (typeof result.response !== 'undefined') {
|
||||||
|
Alert.alert(
|
||||||
|
I18n.t('SUCCESS_IDENTIFICATION'),
|
||||||
|
result.response,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
text: I18n.t("OK"), onPress: () => {
|
||||||
|
this.props.createIndentificationResetAction();
|
||||||
|
this.setState({ triggerSubmitClick: false });
|
||||||
|
this.props.navigation.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
{ cancelable: false }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error !== null) {
|
||||||
|
if (typeof error.data !== 'undefined') {
|
||||||
|
Alert.alert(
|
||||||
|
I18n.t('ERROR_IDENTIFICATION'),
|
||||||
|
error.data.error,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
text: I18n.t("OK"), onPress: () => {
|
||||||
|
this.props.createIndentificationResetAction();
|
||||||
|
this.setState({ triggerSubmitClick: false });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
{ cancelable: false }
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
Alert.alert(
|
||||||
|
I18n.t('ERROR_IDENTIFICATION'),
|
||||||
|
JSON.stringify(error),
|
||||||
|
[
|
||||||
|
{
|
||||||
|
text: I18n.t("OK"), onPress: () => {
|
||||||
|
this.props.createIndentificationResetAction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
{ cancelable: false }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
componentWillUpdate(nextProps, nextState) {
|
||||||
|
let dateNaissance = nextState.dateNaissance || new Date();
|
||||||
|
|
||||||
|
if (this.state.showPickerDateNaissance)
|
||||||
|
this.dateNaissanceFumiProps.value = moment(dateNaissance).format('DD-MM-YYYY');
|
||||||
|
if (this.state.showPickerDateExpiration)
|
||||||
|
this.dateExpirationFumiProps.value = moment(nextState.dateExpiration).format('DD-MM-YYYY');
|
||||||
|
}
|
||||||
|
|
||||||
|
componentWillUnmount() {
|
||||||
|
this.mounted = false;
|
||||||
|
if (this.watchID) Geolocation.clearWatch(this.watchID);
|
||||||
|
}
|
||||||
|
|
||||||
|
showErrorDialog() {
|
||||||
|
this.setState({ modalDialog: false })
|
||||||
|
Aler.alert("Une erreur est survenue", "Impossible de récuperer des informations du pays verifier que votre gps est activé," +
|
||||||
|
"et que vous êtes connecté à internet puis ressayer", [{
|
||||||
|
text: "Recommencer", onPress: () => {
|
||||||
|
this.watchLocation()
|
||||||
|
}
|
||||||
|
}, { text: "Annuler", onPress: () => { this.props.navigation.popToTop() } }])
|
||||||
|
}
|
||||||
|
|
||||||
|
async watchLocation() {
|
||||||
|
Geolocation.getCurrentPosition((position) => {
|
||||||
|
this.treatPosition(position)
|
||||||
|
}, (e) => {
|
||||||
|
this.showErrorDialog()
|
||||||
|
}, this.props.geolocationOptions);
|
||||||
|
if (!this.watchID) {
|
||||||
|
Geolocation.watchPosition((position) => { this.treatPosition(position) }, (e) => { this.showErrorDialog() }, this.props.geolocationOptions)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async requestCameraPermission() {
|
||||||
|
try {
|
||||||
|
const granted = await PermissionsAndroid.request(
|
||||||
|
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
|
||||||
|
{
|
||||||
|
'title': 'Cool Photo App Camera Permission',
|
||||||
|
'message': 'Cool Photo App needs access to your camera ' +
|
||||||
|
'so you can take awesome pictures.'
|
||||||
|
}
|
||||||
|
)
|
||||||
|
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
|
||||||
|
this.watchLocation();
|
||||||
|
} else {
|
||||||
|
this.setState({ modalDialog: false })
|
||||||
|
Alert.alert("Echec à l'autorisation",
|
||||||
|
"L'application n'est pas autorisé à acceder à votre position veuillez verifier que votre GPS est activé et configurer en mode Haute Precision",
|
||||||
|
[{
|
||||||
|
text: "Ok", onPress: () => {
|
||||||
|
this.props.navigation.popToTop()
|
||||||
|
}
|
||||||
|
}])
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
this.setState({ modalDialog: false })
|
||||||
|
Alert.alert("Une erreur est Survenue",
|
||||||
|
"Une erreur est survenu lors du demarrage de l'application veuillez relancer l'application",
|
||||||
|
[{
|
||||||
|
text: "Ok", onPress: () => {
|
||||||
|
BackHandler.exitApp()
|
||||||
|
}
|
||||||
|
}])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
treatPosition(position) {
|
||||||
|
const myLastPosition = this.state.myPosition;
|
||||||
|
const myPosition = position.coords;
|
||||||
|
|
||||||
|
if (!isEqual(myPosition, myLastPosition)) {
|
||||||
|
getPositionInformation(myPosition).then((response) => {
|
||||||
|
if (response.results !== undefined) {
|
||||||
|
if (response.results.length > 0) {
|
||||||
|
let most = response.results[0]
|
||||||
|
let { address_components, formatted_address, place_id } = most
|
||||||
|
this.setState({ address: address_components, textadress: formatted_address, place: place_id })
|
||||||
|
|
||||||
|
let results = response.results;
|
||||||
|
let shortcountry;
|
||||||
|
let mcountry;
|
||||||
|
for (let i = 0; i < results[0].address_components.length; i++) {
|
||||||
|
for (let j = 0; j < results[0].address_components[i].types.length; j++) {
|
||||||
|
if (results[0].address_components[i].types[j] === "country") {
|
||||||
|
mcountry = results[0].address_components[i];
|
||||||
|
shortcountry = mcountry.short_name;
|
||||||
|
this.setState({ shortCountry: mcountry.short_name, longCountry: mcountry.long_name })
|
||||||
|
} else if (results[0].address_components[i].types[j] === "locality") {
|
||||||
|
const name = results[0].address_components[i].short_name;
|
||||||
|
this.setState({ townName: name });
|
||||||
|
getTownInformationName(name).then((result) => {
|
||||||
|
let town = null;
|
||||||
|
if (result instanceof Array) {
|
||||||
|
town = result[0];
|
||||||
|
} else {
|
||||||
|
town = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.setState({ modalVisible: false, town: new Array(town) });
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getListCountriesActive().then((cnt) => {
|
||||||
|
this.setState({ countries: cnt })
|
||||||
|
console.debug(cnt, shortcountry);
|
||||||
|
var found = false
|
||||||
|
for (let i of cnt) {
|
||||||
|
if (i.code_country === shortcountry) {
|
||||||
|
found = true;
|
||||||
|
this.setState({ modalVisible: false, country: i.name })
|
||||||
|
/* this.getNetworks(i.code_dial); */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!found) {
|
||||||
|
Alert.alert("Impossible de recupérer vos informations", "Nous n'avons pas pu recuperer les informations de votre pays veuillez contacter les administrateurs", [{ text: "OK" }]);
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}).catch((e) => {
|
||||||
|
this.showErrorDialog()
|
||||||
|
});
|
||||||
|
this.setState({ myPosition: myPosition });
|
||||||
|
/* if (this.mapRef !== undefined && this.mapRef !== null) {
|
||||||
|
this.mapRef.animateToCoordinate({
|
||||||
|
latitude: myPosition.latitude,
|
||||||
|
longitude: myPosition.longitude
|
||||||
|
}, 1000);
|
||||||
|
this.mapRef.animateToRegion({
|
||||||
|
latitude: myPosition.latitude,
|
||||||
|
longitude: myPosition.longitude,
|
||||||
|
latitudeDelta: 0.03,
|
||||||
|
longitudeDelta: 0.01,
|
||||||
|
}, 1000)
|
||||||
|
} */
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
onChangeDateNaissance = (event, selectedDate) => {
|
||||||
|
let dateNaissance = isNil(this.state.dateNaissance) ? new Date() : this.state.dateNaissance;
|
||||||
|
const currentDate = selectedDate || dateNaissance;
|
||||||
|
this.setState({
|
||||||
|
showPickerDateNaissance: Platform.OS === 'ios' || false,
|
||||||
|
dateNaissance: currentDate,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
onChangeDateExpiration = (event, selectedDate) => {
|
||||||
|
let dateExpiration = isNil(this.state.dateExpiration) ? new Date() : this.state.dateExpiration;
|
||||||
|
const currentDate = selectedDate || dateExpiration;
|
||||||
|
this.setState({
|
||||||
|
showPickerDateExpiration: Platform.OS === 'ios' || false,
|
||||||
|
dateExpiration: currentDate,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
ckeckIfFieldIsOK(champ) {
|
||||||
|
return (isNil(champ) || isEqual(champ.length, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
onSubmitIdentityClient = () => {
|
||||||
|
const { lastname, numeroIdentite, dateNaissance, dateExpiration, country, townName, identityPiecesName } = this.state;
|
||||||
|
|
||||||
|
if (this.ckeckIfFieldIsOK(lastname))
|
||||||
|
this.lastnameAnim.shake(800);
|
||||||
|
else if (this.ckeckIfFieldIsOK(dateNaissance))
|
||||||
|
this.datenaissanceAnim.shake(800);
|
||||||
|
else if (this.ckeckIfFieldIsOK(country))
|
||||||
|
this.countryAnim.shake(800);
|
||||||
|
else if (this.ckeckIfFieldIsOK(townName))
|
||||||
|
this.townAnim.shake(800);
|
||||||
|
else if (this.ckeckIfFieldIsOK(identityPiecesName))
|
||||||
|
this.identityPiecesAnim.shake(800);
|
||||||
|
else if (this.ckeckIfFieldIsOK(numeroIdentite))
|
||||||
|
this.numeroIdentiteAnim.shake(800);
|
||||||
|
else if (this.ckeckIfFieldIsOK(dateExpiration))
|
||||||
|
this.identityDateExpiryAnim.shake(800);
|
||||||
|
else {
|
||||||
|
this.props.createIndentificationAction({
|
||||||
|
lastname: this.state.lastname,
|
||||||
|
firstname: "",
|
||||||
|
birth_date: moment(this.state.dateNaissance).format('DD-MM-YYYY'),
|
||||||
|
town: this.state.townName,
|
||||||
|
country: this.state.country,
|
||||||
|
identity_document: this.state.identityPiecesName,
|
||||||
|
id_identity_document: this.state.numeroIdentite,
|
||||||
|
expiry_date_document: moment(this.state.dateExpiration).format('DD-MM-YYYY'),
|
||||||
|
phone_number: null,
|
||||||
|
id_user: 321
|
||||||
|
});
|
||||||
|
}
|
||||||
|
this.setState({
|
||||||
|
triggerSubmitClick: true
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
renderLoaderModal() {
|
||||||
|
return (
|
||||||
|
<MaterialDialog
|
||||||
|
visible={this.state.modalVisible}
|
||||||
|
title={I18n.t("LOADING_INFO")}>
|
||||||
|
<View style={{ justifyContent: 'center', alignItems: 'center' }}>
|
||||||
|
<Text>{I18n.t("LOADING_DESCRIPTION_COUNTRY")}</Text>
|
||||||
|
<ProgressBarAndroid />
|
||||||
|
</View>
|
||||||
|
</MaterialDialog>)
|
||||||
|
}
|
||||||
|
|
||||||
|
renderLoader = () => {
|
||||||
|
return (
|
||||||
|
<ProgressDialog
|
||||||
|
visible={this.props.loading}
|
||||||
|
title={I18n.t('LOADING')}
|
||||||
|
message={I18n.t('LOADING_INFO')}
|
||||||
|
/>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
renderDateNaissancePicker = () => {
|
||||||
|
return (
|
||||||
|
<DateTimePicker
|
||||||
|
testID="dateTimePicker"
|
||||||
|
timeZoneOffsetInMinutes={0}
|
||||||
|
is24Hour={true}
|
||||||
|
value={isNil(this.state.dateNaissance) ? new Date() : this.state.dateNaissance}
|
||||||
|
mode='date'
|
||||||
|
maximumDate={new Date()}
|
||||||
|
display="spinner"
|
||||||
|
onChange={this.onChangeDateNaissance}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
renderDateExpirationPicker = () => {
|
||||||
|
return (
|
||||||
|
<DateTimePicker
|
||||||
|
testID="dateTimePicker"
|
||||||
|
timeZoneOffsetInMinutes={0}
|
||||||
|
is24Hour={true}
|
||||||
|
value={isNil(this.state.dateExpiration) ? new Date() : this.state.dateExpiration}
|
||||||
|
mode='date'
|
||||||
|
maximumDate={new Date(2300, 10, 20)}
|
||||||
|
display="spinner"
|
||||||
|
onChange={this.onChangeDateExpiration}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
console.log("STATE", this.state);
|
||||||
|
return (
|
||||||
|
<>
|
||||||
|
{this.state.showPickerDateNaissance && this.renderDateNaissancePicker()}
|
||||||
|
{this.state.showPickerDateExpiration && this.renderDateExpirationPicker()}
|
||||||
|
{this.state.modalVisible && this.renderLoaderModal()}
|
||||||
|
{this.props.loading && this.renderLoader()}
|
||||||
|
{this.state.triggerSubmitClick && this.renderCreateIdentificationResponse()}
|
||||||
|
<ScrollView style={styles.container}>
|
||||||
|
<Text style={styles.subbigtitle}>{I18n.t('CREATE_IDENTIFICATION_TITLE')}</Text>
|
||||||
|
<Animatable.View ref={(comp) => { this.lastnameAnim = comp }}>
|
||||||
|
<Fumi iconClass={FontAwesomeIcon} iconName={'user'}
|
||||||
|
label={`${I18n.t('NAME')} ${I18n.t('AND')} ${I18n.t('FIRSTNAME')}`}
|
||||||
|
iconColor={'#f95a25'}
|
||||||
|
iconSize={20}
|
||||||
|
value={this.state.lastname}
|
||||||
|
onChangeText={(lastname) => {
|
||||||
|
this.setState({ lastname })
|
||||||
|
}}
|
||||||
|
style={styles.input}
|
||||||
|
>
|
||||||
|
</Fumi>
|
||||||
|
</Animatable.View>
|
||||||
|
<Animatable.View ref={(comp) => { this.datenaissanceAnim = comp }}>
|
||||||
|
<Fumi iconClass={FontAwesomeIcon} iconName={'calendar'}
|
||||||
|
label={I18n.t('DATE_NAISSANCE')}
|
||||||
|
iconColor={'#f95a25'}
|
||||||
|
iconSize={20}
|
||||||
|
style={styles.input}
|
||||||
|
onFocus={() => {
|
||||||
|
Keyboard.dismiss();
|
||||||
|
this.setState({ showPickerDateNaissance: true })
|
||||||
|
}}
|
||||||
|
{...this.dateNaissanceFumiProps}>
|
||||||
|
</Fumi>
|
||||||
|
</Animatable.View>
|
||||||
|
<Animatable.View ref={(comp) => { this.countryAnim = comp }}
|
||||||
|
style={{
|
||||||
|
width: responsiveWidth(90),
|
||||||
|
height: 60,
|
||||||
|
marginTop: 20,
|
||||||
|
alignSelf: 'center',
|
||||||
|
borderRadius: 10,
|
||||||
|
paddingLeft: 20,
|
||||||
|
paddingRight: 20,
|
||||||
|
backgroundColor: 'white'
|
||||||
|
}}>
|
||||||
|
<Dropdown
|
||||||
|
label={I18n.t('COUNTRY_CHOICE')}
|
||||||
|
data={this.state.countries}
|
||||||
|
useNativeDriver={true}
|
||||||
|
value={this.state.country === null ? "" :
|
||||||
|
this.state.country}
|
||||||
|
onChangeText={(value, index, data) => {
|
||||||
|
this.setState({ country: value });
|
||||||
|
}}
|
||||||
|
valueExtractor={(value) => { return value.name }}
|
||||||
|
labelExtractor={(value) => { return value.name }}
|
||||||
|
/>
|
||||||
|
</Animatable.View>
|
||||||
|
<Animatable.View ref={(comp) => { this.townAnim = comp }}
|
||||||
|
style={{
|
||||||
|
width: responsiveWidth(90),
|
||||||
|
height: 60,
|
||||||
|
marginTop: 20,
|
||||||
|
alignSelf: 'center',
|
||||||
|
borderRadius: 10,
|
||||||
|
paddingLeft: 20,
|
||||||
|
paddingRight: 20,
|
||||||
|
backgroundColor: 'white'
|
||||||
|
}}>
|
||||||
|
<Dropdown
|
||||||
|
label={I18n.t('CHOICE_TOWN')}
|
||||||
|
data={this.state.town}
|
||||||
|
useNativeDriver={true}
|
||||||
|
value={this.state.townName === null ? "" :
|
||||||
|
this.state.townName}
|
||||||
|
onChangeText={(value, index, data) => {
|
||||||
|
this.setState({ townName: value });
|
||||||
|
}}
|
||||||
|
valueExtractor={(value) => { return value.name }}
|
||||||
|
labelExtractor={(value) => { return value.name }}
|
||||||
|
/>
|
||||||
|
</Animatable.View>
|
||||||
|
<Animatable.View ref={(comp) => { this.identityPiecesAnim = comp }}
|
||||||
|
style={{
|
||||||
|
width: responsiveWidth(90),
|
||||||
|
height: 60,
|
||||||
|
marginTop: 20,
|
||||||
|
alignSelf: 'center',
|
||||||
|
borderRadius: 10,
|
||||||
|
paddingLeft: 20,
|
||||||
|
paddingRight: 20,
|
||||||
|
backgroundColor: 'white'
|
||||||
|
}}>
|
||||||
|
<Dropdown
|
||||||
|
label={I18n.t('PIECE_IDENTITE')}
|
||||||
|
data={this.state.identityPieces}
|
||||||
|
useNativeDriver={true}
|
||||||
|
value={this.state.identityPiecesName}
|
||||||
|
onChangeText={(value, index, data) => {
|
||||||
|
this.setState({ identityPiecesName: value });
|
||||||
|
}}
|
||||||
|
valueExtractor={(value) => { return value.name }}
|
||||||
|
labelExtractor={(value) => { return value.name }}
|
||||||
|
/>
|
||||||
|
</Animatable.View>
|
||||||
|
<Animatable.View ref={(comp) => { this.numeroIdentiteAnim = comp }}>
|
||||||
|
<Fumi iconClass={FontAwesomeIcon} iconName={'address-card'}
|
||||||
|
label={`${I18n.t('NUMERO_IDENTITE')}`}
|
||||||
|
iconColor={'#f95a25'}
|
||||||
|
iconSize={20}
|
||||||
|
onChangeText={(numeroIdentite) => {
|
||||||
|
this.setState({ numeroIdentite })
|
||||||
|
}}
|
||||||
|
style={styles.input}
|
||||||
|
>
|
||||||
|
</Fumi>
|
||||||
|
</Animatable.View>
|
||||||
|
<Animatable.View ref={(comp) => { this.identityDateExpiryAnim = comp }}>
|
||||||
|
<Fumi iconClass={FontAwesomeIcon} iconName={'calendar-times-o'}
|
||||||
|
label={I18n.t('IDENTITY_PIECE_EXPIRY_DATE')}
|
||||||
|
iconColor={'#f95a25'}
|
||||||
|
iconSize={20}
|
||||||
|
style={styles.input}
|
||||||
|
onFocus={() => {
|
||||||
|
Keyboard.dismiss();
|
||||||
|
this.setState({ showPickerDateExpiration: true })
|
||||||
|
}}
|
||||||
|
{...this.dateExpirationFumiProps}>
|
||||||
|
</Fumi>
|
||||||
|
</Animatable.View>
|
||||||
|
|
||||||
|
<Button style={styles.btnvalide}
|
||||||
|
textStyle={styles.textbtnvalide}
|
||||||
|
isLoading={this.state.isLoging}
|
||||||
|
onPress={() => { this.onSubmitIdentityClient() }}>
|
||||||
|
{I18n.t('SUBMIT_LABEL')}</Button>
|
||||||
|
|
||||||
|
</ScrollView>
|
||||||
|
</>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const maptStateToProps = state => ({
|
||||||
|
loading: state.createIdentificationReducer.loading,
|
||||||
|
result: state.createIdentificationReducer.result,
|
||||||
|
error: state.createIdentificationReducer.error,
|
||||||
|
});
|
||||||
|
|
||||||
|
const mapDispatchToProps = dispatch => bindActionCreators({
|
||||||
|
createIndentificationAction,
|
||||||
|
createIndentificationResetAction
|
||||||
|
}, dispatch);
|
||||||
|
|
||||||
|
export default connect(maptStateToProps, mapDispatchToProps)(CreateIdentificationUser);
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
container: {
|
||||||
|
flex: 1,
|
||||||
|
backgroundColor: Color.primaryDarkColor,
|
||||||
|
},
|
||||||
|
textbtnvalide: {
|
||||||
|
color: 'white',
|
||||||
|
fontWeight: 'bold'
|
||||||
|
},
|
||||||
|
bigtitle: {
|
||||||
|
color: 'white',
|
||||||
|
fontSize: 20,
|
||||||
|
flex: 1,
|
||||||
|
fontWeight: 'bold',
|
||||||
|
textAlign: 'center',
|
||||||
|
margin: 20,
|
||||||
|
},
|
||||||
|
subbigtitle: {
|
||||||
|
color: 'white',
|
||||||
|
fontSize: 17,
|
||||||
|
textAlign: 'center',
|
||||||
|
margin: 5,
|
||||||
|
},
|
||||||
|
btnvalide: {
|
||||||
|
marginTop: 20,
|
||||||
|
marginLeft: 20,
|
||||||
|
marginRight: 20,
|
||||||
|
borderColor: 'transparent',
|
||||||
|
backgroundColor: Color.accentLightColor,
|
||||||
|
height: 52
|
||||||
|
},
|
||||||
|
input: {
|
||||||
|
height: 60,
|
||||||
|
marginTop: responsiveHeight(2),
|
||||||
|
marginLeft: responsiveWidth(5),
|
||||||
|
marginRight: responsiveWidth(5),
|
||||||
|
borderRadius: 5,
|
||||||
|
}
|
||||||
|
});
|
|
@ -24,7 +24,7 @@ import Geolocation from 'react-native-geolocation-service';
|
||||||
import { identityPieces } from '../../utils/UtilsFunction';
|
import { identityPieces } from '../../utils/UtilsFunction';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { bindActionCreators } from 'redux';
|
import { bindActionCreators } from 'redux';
|
||||||
import { createIndentificationAction, createIndentificationResetAction } from '../../webservice/IdentificationApi';
|
import { createIndentificationAction, createIndentificationResetAction, getNumberResetAction, getNumberDetailAction } from '../../webservice/IdentificationApi';
|
||||||
const GEOLOCATION_OPTIONS = { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000, useSignificantChanges: true };
|
const GEOLOCATION_OPTIONS = { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000, useSignificantChanges: true };
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
|
|
||||||
|
@ -66,6 +66,7 @@ class CreateIdentification extends Component {
|
||||||
numeroTelephone: null,
|
numeroTelephone: null,
|
||||||
networksinglePickerVisible: false,
|
networksinglePickerVisible: false,
|
||||||
confirmpassanim: null,
|
confirmpassanim: null,
|
||||||
|
userId: null,
|
||||||
isLoging: false,
|
isLoging: false,
|
||||||
countries: [],
|
countries: [],
|
||||||
town: [],
|
town: [],
|
||||||
|
@ -82,11 +83,15 @@ class CreateIdentification extends Component {
|
||||||
modalVisible: true,
|
modalVisible: true,
|
||||||
select_network: I18n.t("SELECT_NETWORK"),
|
select_network: I18n.t("SELECT_NETWORK"),
|
||||||
user: null,
|
user: null,
|
||||||
triggerSubmitClick: false
|
triggerSubmitClick: false,
|
||||||
|
triggerNextClick: false,
|
||||||
|
displayFirstStep: true,
|
||||||
|
displaySecondStep: false,
|
||||||
};
|
};
|
||||||
this.dateNaissanceFumiProps = {};
|
this.dateNaissanceFumiProps = {};
|
||||||
this.dateExpirationFumiProps = {};
|
this.dateExpirationFumiProps = {};
|
||||||
this.props.createIndentificationResetAction();
|
this.props.createIndentificationResetAction();
|
||||||
|
this.props.getNumberResetAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
componentDidMount() {
|
componentDidMount() {
|
||||||
|
@ -115,12 +120,14 @@ class CreateIdentification extends Component {
|
||||||
if (result !== null) {
|
if (result !== null) {
|
||||||
if (typeof result.response !== 'undefined') {
|
if (typeof result.response !== 'undefined') {
|
||||||
Alert.alert(
|
Alert.alert(
|
||||||
"SUCCES",
|
I18n.t('SUCCESS_IDENTIFICATION'),
|
||||||
JSON.stringify(result.response),
|
result.response,
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
text: I18n.t("OK"), onPress: () => {
|
text: I18n.t("OK"), onPress: () => {
|
||||||
this.props.createIndentificationResetAction();
|
this.props.createIndentificationResetAction();
|
||||||
|
this.setState({ triggerSubmitClick: false });
|
||||||
|
this.props.navigation.pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -133,12 +140,13 @@ class CreateIdentification extends Component {
|
||||||
if (error !== null) {
|
if (error !== null) {
|
||||||
if (typeof error.data !== 'undefined') {
|
if (typeof error.data !== 'undefined') {
|
||||||
Alert.alert(
|
Alert.alert(
|
||||||
"ERREUR",
|
I18n.t('ERROR_IDENTIFICATION'),
|
||||||
JSON.stringify(error.data),
|
error.data.error,
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
text: I18n.t("OK"), onPress: () => {
|
text: I18n.t("OK"), onPress: () => {
|
||||||
this.props.createIndentificationResetAction();
|
this.props.createIndentificationResetAction();
|
||||||
|
this.setState({ triggerSubmitClick: false });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,7 +155,7 @@ class CreateIdentification extends Component {
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
Alert.alert(
|
Alert.alert(
|
||||||
"ERREUR",
|
I18n.t('ERROR_IDENTIFICATION'),
|
||||||
JSON.stringify(error),
|
JSON.stringify(error),
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
@ -162,9 +170,12 @@ class CreateIdentification extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
componentWillUpdate(nextProps, nextState) {
|
componentWillUpdate(nextProps, nextState) {
|
||||||
|
let dateNaissance = nextState.dateNaissance || new Date();
|
||||||
|
|
||||||
if (this.state.showPickerDateNaissance)
|
if (this.state.showPickerDateNaissance)
|
||||||
this.dateNaissanceFumiProps.value = moment(nextState.dateNaissance).format('DD-MM-YYYY');
|
this.dateNaissanceFumiProps.value = moment(dateNaissance).format('DD-MM-YYYY');
|
||||||
if (this.state.showPickerDateExpiration)
|
if (this.state.showPickerDateExpiration)
|
||||||
this.dateExpirationFumiProps.value = moment(nextState.dateExpiration).format('DD-MM-YYYY');
|
this.dateExpirationFumiProps.value = moment(nextState.dateExpiration).format('DD-MM-YYYY');
|
||||||
}
|
}
|
||||||
|
@ -308,21 +319,41 @@ class CreateIdentification extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
onChangeDateNaissance = (event, selectedDate) => {
|
onChangeDateNaissance = (event, selectedDate) => {
|
||||||
const currentDate = selectedDate || new Date();
|
let dateNaissance = isNil(this.state.dateNaissance) ? new Date() : this.state.dateNaissance;
|
||||||
|
const currentDate = selectedDate || dateNaissance;
|
||||||
this.setState({
|
this.setState({
|
||||||
showPickerDateNaissance: Platform.OS === 'ios' || false,
|
showPickerDateNaissance: Platform.OS === 'ios' || false,
|
||||||
dateNaissance: moment(currentDate).format('DD-MM-YYYY'),
|
dateNaissance: currentDate,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
onChangeDateExpiration = (event, selectedDate) => {
|
onChangeDateExpiration = (event, selectedDate) => {
|
||||||
const currentDate = selectedDate || new Date();
|
let dateExpiration = isNil(this.state.dateExpiration) ? new Date() : this.state.dateExpiration;
|
||||||
|
const currentDate = selectedDate || dateExpiration;
|
||||||
this.setState({
|
this.setState({
|
||||||
showPickerDateExpiration: Platform.OS === 'ios' || false,
|
showPickerDateExpiration: Platform.OS === 'ios' || false,
|
||||||
dateExpiration: moment(currentDate).format('DD-MM-YYYY'),
|
dateExpiration: currentDate,
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
onSubmitNextStep = () => {
|
||||||
|
|
||||||
|
const { numeroTelephone } = this.state;
|
||||||
|
this.props.getNumberResetAction();
|
||||||
|
if (this.ckeckIfFieldIsOK(numeroTelephone))
|
||||||
|
this.numeroTelephoneAnim.shake(800);
|
||||||
|
else {
|
||||||
|
this.props.getNumberDetailAction(numeroTelephone);
|
||||||
|
this.setState({ triggerNextClick: true });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onSubmitPrevious = () => {
|
||||||
|
this.setState({
|
||||||
|
displayFirstStep: !this.state.displayFirstStep,
|
||||||
|
displaySecondStep: !this.state.displaySecondStep,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
ckeckIfFieldIsOK(champ) {
|
ckeckIfFieldIsOK(champ) {
|
||||||
return (isNil(champ) || isEqual(champ.length, 0));
|
return (isNil(champ) || isEqual(champ.length, 0));
|
||||||
}
|
}
|
||||||
|
@ -332,8 +363,6 @@ class CreateIdentification extends Component {
|
||||||
|
|
||||||
if (this.ckeckIfFieldIsOK(lastname))
|
if (this.ckeckIfFieldIsOK(lastname))
|
||||||
this.lastnameAnim.shake(800);
|
this.lastnameAnim.shake(800);
|
||||||
if (this.ckeckIfFieldIsOK(numeroTelephone))
|
|
||||||
this.numeroTelephoneAnim.shake(800);
|
|
||||||
else if (this.ckeckIfFieldIsOK(dateNaissance))
|
else if (this.ckeckIfFieldIsOK(dateNaissance))
|
||||||
this.datenaissanceAnim.shake(800);
|
this.datenaissanceAnim.shake(800);
|
||||||
else if (this.ckeckIfFieldIsOK(country))
|
else if (this.ckeckIfFieldIsOK(country))
|
||||||
|
@ -347,16 +376,18 @@ class CreateIdentification extends Component {
|
||||||
else if (this.ckeckIfFieldIsOK(dateExpiration))
|
else if (this.ckeckIfFieldIsOK(dateExpiration))
|
||||||
this.identityDateExpiryAnim.shake(800);
|
this.identityDateExpiryAnim.shake(800);
|
||||||
else {
|
else {
|
||||||
|
moment(dateNaissance).format('DD-MM-YYYY')
|
||||||
this.props.createIndentificationAction({
|
this.props.createIndentificationAction({
|
||||||
lastname: this.state.lastname,
|
lastname: this.state.lastname,
|
||||||
firstname: "",
|
firstname: "",
|
||||||
birth_date: this.state.dateNaissance,
|
birth_date: moment(this.state.dateNaissance).format('DD-MM-YYYY'),
|
||||||
town: this.state.townName,
|
town: this.state.townName,
|
||||||
country: this.state.country,
|
country: this.state.country,
|
||||||
identity_document: this.state.identityPiecesName,
|
identity_document: this.state.identityPiecesName,
|
||||||
id_identity_document: this.state.numeroIdentite,
|
id_identity_document: this.state.numeroIdentite,
|
||||||
expiry_date_document: this.state.dateExpiration,
|
expiry_date_document: moment(this.state.dateExpiration).format('DD-MM-YYYY'),
|
||||||
id_user: 321
|
phone_number: this.state.numeroTelephone,
|
||||||
|
id_user: this.state.userId
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -365,6 +396,75 @@ class CreateIdentification extends Component {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
renderGetNumberResponse = () => {
|
||||||
|
|
||||||
|
const { resultNumberDetail, errorNumberDetail } = this.props;
|
||||||
|
|
||||||
|
console.log("PROPS", this.props);
|
||||||
|
|
||||||
|
if (resultNumberDetail !== null) {
|
||||||
|
if (resultNumberDetail.status === 200) {
|
||||||
|
this.setState({
|
||||||
|
lastname: resultNumberDetail.response.lastname,
|
||||||
|
userId: resultNumberDetail.response.id,
|
||||||
|
displayFirstStep: !this.state.displayFirstStep,
|
||||||
|
displaySecondStep: !this.state.displaySecondStep,
|
||||||
|
});
|
||||||
|
this.props.getNumberResetAction();
|
||||||
|
}
|
||||||
|
/* if (typeof resultNumberDetail.response !== 'undefined') {
|
||||||
|
Alert.alert(
|
||||||
|
"SUCCES",
|
||||||
|
JSON.stringify(resultNumberDetail.response),
|
||||||
|
[
|
||||||
|
{
|
||||||
|
text: I18n.t("OK"), onPress: () => {
|
||||||
|
this.props.getNumberResetAction();
|
||||||
|
this.setState({ triggerNextClick: false })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
{ cancelable: false }
|
||||||
|
)
|
||||||
|
} */
|
||||||
|
}
|
||||||
|
|
||||||
|
if (errorNumberDetail !== null) {
|
||||||
|
if (typeof errorNumberDetail.data !== 'undefined') {
|
||||||
|
Alert.alert(
|
||||||
|
I18n.t('ERROR_IDENTIFICATION'),
|
||||||
|
errorNumberDetail.data.error,
|
||||||
|
[
|
||||||
|
{
|
||||||
|
text: I18n.t("OK"), onPress: () => {
|
||||||
|
this.props.createIndentificationResetAction();
|
||||||
|
this.setState({ triggerNextClick: false })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
{ cancelable: false }
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
Alert.alert(
|
||||||
|
I18n.t('ERROR_IDENTIFICATION'),
|
||||||
|
JSON.stringify(errorNumberDetail),
|
||||||
|
[
|
||||||
|
{
|
||||||
|
text: I18n.t("OK"), onPress: () => {
|
||||||
|
this.props.createIndentificationResetAction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
],
|
||||||
|
{ cancelable: false }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
renderLoaderModal() {
|
renderLoaderModal() {
|
||||||
return (
|
return (
|
||||||
<MaterialDialog
|
<MaterialDialog
|
||||||
|
@ -380,7 +480,7 @@ class CreateIdentification extends Component {
|
||||||
renderLoader = () => {
|
renderLoader = () => {
|
||||||
return (
|
return (
|
||||||
<ProgressDialog
|
<ProgressDialog
|
||||||
visible={this.props.loading}
|
visible={this.props.loading || this.props.loadingNumberDetail}
|
||||||
title={I18n.t('LOADING')}
|
title={I18n.t('LOADING')}
|
||||||
message={I18n.t('LOADING_INFO')}
|
message={I18n.t('LOADING_INFO')}
|
||||||
/>
|
/>
|
||||||
|
@ -393,7 +493,7 @@ class CreateIdentification extends Component {
|
||||||
testID="dateTimePicker"
|
testID="dateTimePicker"
|
||||||
timeZoneOffsetInMinutes={0}
|
timeZoneOffsetInMinutes={0}
|
||||||
is24Hour={true}
|
is24Hour={true}
|
||||||
value={this.state.dateNaissance === null ? new Date() : this.state.dateNaissance}
|
value={isNil(this.state.dateNaissance) ? new Date() : this.state.dateNaissance}
|
||||||
mode='date'
|
mode='date'
|
||||||
maximumDate={new Date()}
|
maximumDate={new Date()}
|
||||||
display="spinner"
|
display="spinner"
|
||||||
|
@ -408,7 +508,7 @@ class CreateIdentification extends Component {
|
||||||
testID="dateTimePicker"
|
testID="dateTimePicker"
|
||||||
timeZoneOffsetInMinutes={0}
|
timeZoneOffsetInMinutes={0}
|
||||||
is24Hour={true}
|
is24Hour={true}
|
||||||
value={this.state.dateExpiration === null ? new Date() : this.state.dateExpiration}
|
value={isNil(this.state.dateExpiration) ? new Date() : this.state.dateExpiration}
|
||||||
mode='date'
|
mode='date'
|
||||||
maximumDate={new Date(2300, 10, 20)}
|
maximumDate={new Date(2300, 10, 20)}
|
||||||
display="spinner"
|
display="spinner"
|
||||||
|
@ -425,22 +525,14 @@ class CreateIdentification extends Component {
|
||||||
{this.state.showPickerDateNaissance && this.renderDateNaissancePicker()}
|
{this.state.showPickerDateNaissance && this.renderDateNaissancePicker()}
|
||||||
{this.state.showPickerDateExpiration && this.renderDateExpirationPicker()}
|
{this.state.showPickerDateExpiration && this.renderDateExpirationPicker()}
|
||||||
{this.state.modalVisible && this.renderLoaderModal()}
|
{this.state.modalVisible && this.renderLoaderModal()}
|
||||||
{this.props.loading && this.renderLoader()}
|
{(this.props.loading || this.props.loadingNumberDetail) && this.renderLoader()}
|
||||||
{this.state.triggerSubmitClick && this.renderCreateIdentificationResponse()}
|
{this.state.triggerSubmitClick && this.renderCreateIdentificationResponse()}
|
||||||
|
{this.state.triggerNextClick && this.renderGetNumberResponse()}
|
||||||
<ScrollView style={styles.container}>
|
<ScrollView style={styles.container}>
|
||||||
|
|
||||||
|
{this.state.displayFirstStep &&
|
||||||
|
<>
|
||||||
<Text style={styles.subbigtitle}>{I18n.t('CREATE_IDENTIFICATION_TITLE')}</Text>
|
<Text style={styles.subbigtitle}>{I18n.t('CREATE_IDENTIFICATION_TITLE')}</Text>
|
||||||
<Animatable.View ref={(comp) => { this.lastnameAnim = comp }}>
|
|
||||||
<Fumi iconClass={FontAwesomeIcon} iconName={'user'}
|
|
||||||
label={`${I18n.t('NAME')} ${I18n.t('AND')} ${I18n.t('FIRSTNAME')}`}
|
|
||||||
iconColor={'#f95a25'}
|
|
||||||
iconSize={20}
|
|
||||||
onChangeText={(lastname) => {
|
|
||||||
this.setState({ lastname })
|
|
||||||
}}
|
|
||||||
style={styles.input}
|
|
||||||
>
|
|
||||||
</Fumi>
|
|
||||||
</Animatable.View>
|
|
||||||
<Animatable.View ref={(comp) => { this.numeroTelephoneAnim = comp }}>
|
<Animatable.View ref={(comp) => { this.numeroTelephoneAnim = comp }}>
|
||||||
<Fumi iconClass={FontAwesomeIcon} iconName={'phone'}
|
<Fumi iconClass={FontAwesomeIcon} iconName={'phone'}
|
||||||
label={I18n.t('PHONE')}
|
label={I18n.t('PHONE')}
|
||||||
|
@ -454,19 +546,7 @@ class CreateIdentification extends Component {
|
||||||
>
|
>
|
||||||
</Fumi>
|
</Fumi>
|
||||||
</Animatable.View>
|
</Animatable.View>
|
||||||
<Animatable.View ref={(comp) => { this.datenaissanceAnim = comp }}>
|
|
||||||
<Fumi iconClass={FontAwesomeIcon} iconName={'calendar'}
|
|
||||||
label={I18n.t('DATE_NAISSANCE')}
|
|
||||||
iconColor={'#f95a25'}
|
|
||||||
iconSize={20}
|
|
||||||
style={styles.input}
|
|
||||||
onFocus={() => {
|
|
||||||
Keyboard.dismiss();
|
|
||||||
this.setState({ showPickerDateNaissance: true })
|
|
||||||
}}
|
|
||||||
{...this.dateNaissanceFumiProps}>
|
|
||||||
</Fumi>
|
|
||||||
</Animatable.View>
|
|
||||||
<Animatable.View ref={(comp) => { this.countryAnim = comp }}
|
<Animatable.View ref={(comp) => { this.countryAnim = comp }}
|
||||||
style={{
|
style={{
|
||||||
width: responsiveWidth(90),
|
width: responsiveWidth(90),
|
||||||
|
@ -515,6 +595,42 @@ class CreateIdentification extends Component {
|
||||||
labelExtractor={(value) => { return value.name }}
|
labelExtractor={(value) => { return value.name }}
|
||||||
/>
|
/>
|
||||||
</Animatable.View>
|
</Animatable.View>
|
||||||
|
<Button style={styles.btnvalide}
|
||||||
|
textStyle={styles.textbtnvalide}
|
||||||
|
isLoading={this.state.isLoging}
|
||||||
|
onPress={() => { this.onSubmitNextStep() }}>
|
||||||
|
{I18n.t('NEXT')}</Button>
|
||||||
|
</>}
|
||||||
|
|
||||||
|
|
||||||
|
{this.state.displaySecondStep &&
|
||||||
|
<>
|
||||||
|
<Animatable.View ref={(comp) => { this.lastnameAnim = comp }}>
|
||||||
|
<Fumi iconClass={FontAwesomeIcon} iconName={'user'}
|
||||||
|
label={`${I18n.t('NAME')} ${I18n.t('AND')} ${I18n.t('FIRSTNAME')}`}
|
||||||
|
iconColor={'#f95a25'}
|
||||||
|
iconSize={20}
|
||||||
|
value={this.state.lastname}
|
||||||
|
onChangeText={(lastname) => {
|
||||||
|
this.setState({ lastname })
|
||||||
|
}}
|
||||||
|
style={styles.input}
|
||||||
|
>
|
||||||
|
</Fumi>
|
||||||
|
</Animatable.View>
|
||||||
|
<Animatable.View ref={(comp) => { this.datenaissanceAnim = comp }}>
|
||||||
|
<Fumi iconClass={FontAwesomeIcon} iconName={'calendar'}
|
||||||
|
label={I18n.t('DATE_NAISSANCE')}
|
||||||
|
iconColor={'#f95a25'}
|
||||||
|
iconSize={20}
|
||||||
|
style={styles.input}
|
||||||
|
onFocus={() => {
|
||||||
|
Keyboard.dismiss();
|
||||||
|
this.setState({ showPickerDateNaissance: true })
|
||||||
|
}}
|
||||||
|
{...this.dateNaissanceFumiProps}>
|
||||||
|
</Fumi>
|
||||||
|
</Animatable.View>
|
||||||
<Animatable.View ref={(comp) => { this.identityPiecesAnim = comp }}
|
<Animatable.View ref={(comp) => { this.identityPiecesAnim = comp }}
|
||||||
style={{
|
style={{
|
||||||
width: responsiveWidth(90),
|
width: responsiveWidth(90),
|
||||||
|
@ -564,12 +680,21 @@ class CreateIdentification extends Component {
|
||||||
</Fumi>
|
</Fumi>
|
||||||
</Animatable.View>
|
</Animatable.View>
|
||||||
|
|
||||||
<Button style={styles.btnvalide}
|
<View style={{ flexDirection: 'row', justifyContent: 'space-between', flex: 1 }}>
|
||||||
|
<Button style={styles.btnSubmit}
|
||||||
|
textStyle={styles.textbtnvalide}
|
||||||
|
onPress={() => { this.onSubmitPrevious() }}>
|
||||||
|
{I18n.t('PREVIOUS')}</Button>
|
||||||
|
|
||||||
|
<Button style={styles.btnSubmit}
|
||||||
textStyle={styles.textbtnvalide}
|
textStyle={styles.textbtnvalide}
|
||||||
isLoading={this.state.isLoging}
|
isLoading={this.state.isLoging}
|
||||||
onPress={() => { this.onSubmitIdentityClient() }}>
|
onPress={() => { this.onSubmitIdentityClient() }}>
|
||||||
{I18n.t('SUBMIT_LABEL')}</Button>
|
{I18n.t('SUBMIT_LABEL')}</Button>
|
||||||
|
|
||||||
|
</View>
|
||||||
|
</>
|
||||||
|
}
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
</>
|
</>
|
||||||
)
|
)
|
||||||
|
@ -580,11 +705,17 @@ const maptStateToProps = state => ({
|
||||||
loading: state.createIdentificationReducer.loading,
|
loading: state.createIdentificationReducer.loading,
|
||||||
result: state.createIdentificationReducer.result,
|
result: state.createIdentificationReducer.result,
|
||||||
error: state.createIdentificationReducer.error,
|
error: state.createIdentificationReducer.error,
|
||||||
|
|
||||||
|
loadingNumberDetail: state.getNumberInformationReducer.loading,
|
||||||
|
resultNumberDetail: state.getNumberInformationReducer.result,
|
||||||
|
errorNumberDetail: state.getNumberInformationReducer.error,
|
||||||
});
|
});
|
||||||
|
|
||||||
const mapDispatchToProps = dispatch => bindActionCreators({
|
const mapDispatchToProps = dispatch => bindActionCreators({
|
||||||
createIndentificationAction,
|
createIndentificationAction,
|
||||||
createIndentificationResetAction
|
createIndentificationResetAction,
|
||||||
|
getNumberDetailAction,
|
||||||
|
getNumberResetAction
|
||||||
}, dispatch);
|
}, dispatch);
|
||||||
|
|
||||||
export default connect(maptStateToProps, mapDispatchToProps)(CreateIdentification);
|
export default connect(maptStateToProps, mapDispatchToProps)(CreateIdentification);
|
||||||
|
@ -620,6 +751,15 @@ const styles = StyleSheet.create({
|
||||||
backgroundColor: Color.accentLightColor,
|
backgroundColor: Color.accentLightColor,
|
||||||
height: 52
|
height: 52
|
||||||
},
|
},
|
||||||
|
btnSubmit: {
|
||||||
|
marginTop: 20,
|
||||||
|
borderColor: 'transparent',
|
||||||
|
backgroundColor: Color.accentLightColor,
|
||||||
|
height: 52,
|
||||||
|
width: "30%",
|
||||||
|
marginLeft: 20,
|
||||||
|
marginRight: 20,
|
||||||
|
},
|
||||||
input: {
|
input: {
|
||||||
height: 60,
|
height: 60,
|
||||||
marginTop: responsiveHeight(2),
|
marginTop: responsiveHeight(2),
|
||||||
|
|
|
@ -23,6 +23,8 @@ import { identityPieces } from '../../utils/UtilsFunction';
|
||||||
const GEOLOCATION_OPTIONS = { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000, useSignificantChanges: true };
|
const GEOLOCATION_OPTIONS = { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000, useSignificantChanges: true };
|
||||||
const moment = require('moment');
|
const moment = require('moment');
|
||||||
import LottieView from 'lottie-react-native';
|
import LottieView from 'lottie-react-native';
|
||||||
|
import { TouchableOpacity } from 'react-native-gesture-handler';
|
||||||
|
import Camera from '../../components/Camera';
|
||||||
|
|
||||||
|
|
||||||
export default class ValidateIdentification extends Component {
|
export default class ValidateIdentification extends Component {
|
||||||
|
@ -47,14 +49,16 @@ export default class ValidateIdentification extends Component {
|
||||||
headerTitleStyle: {
|
headerTitleStyle: {
|
||||||
color: "white"
|
color: "white"
|
||||||
},
|
},
|
||||||
title: I18n.t('VALIDATE_IDENTIFICATION_DESCRIPTION')
|
title: I18n.t('VALIDATE_IDENTIFICATION_DESCRIPTION'),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
constructor(props) {
|
constructor(props) {
|
||||||
super(props);
|
super(props);
|
||||||
this.state = {
|
this.state = {
|
||||||
memberCode: null
|
memberCode: null,
|
||||||
|
image: null,
|
||||||
|
displayCamera: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -115,6 +119,15 @@ export default class ValidateIdentification extends Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onPicture = ({ uri }) => {
|
||||||
|
this.setState({ image: uri, displayCamera: true });
|
||||||
|
console.log("URI", uri);
|
||||||
|
}
|
||||||
|
|
||||||
|
onBackToCamera = () => {
|
||||||
|
this.setState({ image: null, displayCamera: false });
|
||||||
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
console.log("STATE", this.state);
|
console.log("STATE", this.state);
|
||||||
const { showPickerDateNaissance } = this.state;
|
const { showPickerDateNaissance } = this.state;
|
||||||
|
@ -128,12 +141,29 @@ export default class ValidateIdentification extends Component {
|
||||||
justifyContent: 'center',
|
justifyContent: 'center',
|
||||||
alignItems: 'center'
|
alignItems: 'center'
|
||||||
}} ref={(comp) => { this.nameanim = comp }}>
|
}} ref={(comp) => { this.nameanim = comp }}>
|
||||||
|
<TouchableOpacity onPress={() => {
|
||||||
|
this.onBackToCamera();
|
||||||
|
this.setState({ displayCamera: true })
|
||||||
|
}}>
|
||||||
|
|
||||||
|
{
|
||||||
|
this.state.displayCamera ?
|
||||||
|
<View style={styles.lottie}>
|
||||||
|
{
|
||||||
|
this.state.image ?
|
||||||
|
<Image source={{ uri: this.state.image }} style={{ flex: 1 }} />
|
||||||
|
: <Camera onPicture={this.onPicture} />
|
||||||
|
}
|
||||||
|
</View>
|
||||||
|
:
|
||||||
<LottieView
|
<LottieView
|
||||||
style={styles.lottie}
|
style={styles.lottie}
|
||||||
source={require('../../datas/json/identity_scan.json')}
|
source={require('../../datas/json/identity_scan.json')}
|
||||||
autoPlay
|
autoPlay
|
||||||
loop={true}
|
loop={true}
|
||||||
/>
|
/>
|
||||||
|
}
|
||||||
|
</TouchableOpacity>
|
||||||
</Animatable.View>
|
</Animatable.View>
|
||||||
|
|
||||||
<Animatable.View ref={(comp) => { this.nameanim = comp }}>
|
<Animatable.View ref={(comp) => { this.nameanim = comp }}>
|
||||||
|
|
|
@ -252,7 +252,8 @@ export default class OptionsMenu extends Component {
|
||||||
}
|
}
|
||||||
_renderItem = (item) => {
|
_renderItem = (item) => {
|
||||||
if (item === "creditrequest" || item === 'historyItemDetails' || item === 'filter' || item === 'networks' || item === 'walletDetail' || item === 'walletDetailUser'
|
if (item === "creditrequest" || item === 'historyItemDetails' || item === 'filter' || item === 'networks' || item === 'walletDetail' || item === 'walletDetailUser'
|
||||||
|| item === 'walletDepot' || item === 'walletRetrait' || item === 'createIdentification' || item === 'walletOptionSelect' || item === 'validateIdentification') {
|
|| item === 'walletDepot' || item === 'walletRetrait' || item === 'createIdentification' || item === 'walletOptionSelect' || item === 'validateIdentification'
|
||||||
|
|| item === 'createIdentificationUser') {
|
||||||
return null
|
return null
|
||||||
} else {
|
} else {
|
||||||
const color = this.state.currentId === item.id ? theme.accent : "grey"
|
const color = this.state.currentId === item.id ? theme.accent : "grey"
|
||||||
|
|
|
@ -31,7 +31,7 @@ import 'moment/locale/en-nz'
|
||||||
import 'moment/locale/en-gb'
|
import 'moment/locale/en-gb'
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { bindActionCreators } from 'redux';
|
import { bindActionCreators } from 'redux';
|
||||||
import { thousandsSeparators, isEmptyObject, transactionHistoryUser, optionDepotUserScreen, optionDepotScreen, optionRetraitScreen, optionRetraitUserScreen, transactionHistoryLabel, isIlinkWorldWallet, cutString, optionIdentificationScreen } from '../../utils/UtilsFunction';
|
import { thousandsSeparators, isEmptyObject, optionPaiementFacture, transactionHistoryUser, optionDepotUserScreen, optionDepotScreen, optionRetraitScreen, optionRetraitUserScreen, transactionHistoryLabel, isIlinkWorldWallet, cutString, optionIdentificationScreen } from '../../utils/UtilsFunction';
|
||||||
import DeviceInfo from 'react-native-device-info';
|
import DeviceInfo from 'react-native-device-info';
|
||||||
const thousands = require('thousands');
|
const thousands = require('thousands');
|
||||||
|
|
||||||
|
@ -697,7 +697,16 @@ class WalletDetail extends Component {
|
||||||
<View style={[styles.containerTouch]}>
|
<View style={[styles.containerTouch]}>
|
||||||
|
|
||||||
<TouchableOpacity style={styles.contain}
|
<TouchableOpacity style={styles.contain}
|
||||||
onPress={() => { }}
|
onPress={() => {
|
||||||
|
this.props.navigation.push(route.walletOptionSelect, {
|
||||||
|
optionSelect: optionPaiementFacture,
|
||||||
|
onGoBack: () => this.refresh(),
|
||||||
|
lottie: {
|
||||||
|
source: require("./../../datas/json/paiement_facture.json"),
|
||||||
|
loop: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}}
|
||||||
activeOpacity={0.9}>
|
activeOpacity={0.9}>
|
||||||
|
|
||||||
<Icon name='file-document'
|
<Icon name='file-document'
|
||||||
|
|
|
@ -32,7 +32,7 @@ import 'moment/locale/en-nz'
|
||||||
import 'moment/locale/en-gb'
|
import 'moment/locale/en-gb'
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { bindActionCreators } from 'redux';
|
import { bindActionCreators } from 'redux';
|
||||||
import { thousandsSeparators, isEmptyObject, transactionHistoryUser, optionDepotUserScreen, optionRetraitUserScreen, transactionHistoryLabel } from '../../utils/UtilsFunction';
|
import { thousandsSeparators, isEmptyObject, transactionHistoryUser, optionDepotUserScreen, optionRetraitUserScreen, transactionHistoryLabel, optionPaiementFacture } from '../../utils/UtilsFunction';
|
||||||
import DeviceInfo from 'react-native-device-info';
|
import DeviceInfo from 'react-native-device-info';
|
||||||
const thousands = require('thousands');
|
const thousands = require('thousands');
|
||||||
|
|
||||||
|
@ -496,8 +496,16 @@ class WalletDetailUser extends Component {
|
||||||
<View style={[styles.containerTouch]}>
|
<View style={[styles.containerTouch]}>
|
||||||
|
|
||||||
<TouchableOpacity style={styles.contain}
|
<TouchableOpacity style={styles.contain}
|
||||||
onPress={() => { }}
|
onPress={() => {
|
||||||
activeOpacity={0.9}>
|
this.props.navigation.push(route.walletOptionSelect, {
|
||||||
|
optionSelect: optionPaiementFacture,
|
||||||
|
onGoBack: () => this.refresh(),
|
||||||
|
lottie: {
|
||||||
|
source: require("./../../datas/json/paiement_facture.json"),
|
||||||
|
loop: true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}} activeOpacity={0.9}>
|
||||||
|
|
||||||
<Icon name='file-document'
|
<Icon name='file-document'
|
||||||
color={Color.primaryColor}
|
color={Color.primaryColor}
|
||||||
|
@ -526,7 +534,7 @@ class WalletDetailUser extends Component {
|
||||||
|
|
||||||
<TouchableOpacity style={styles.contain}
|
<TouchableOpacity style={styles.contain}
|
||||||
onPress={() => {
|
onPress={() => {
|
||||||
this.props.navigation.push(route.createIdentification)
|
this.props.navigation.push(route.createIdentificationUser)
|
||||||
}}
|
}}
|
||||||
activeOpacity={0.9}>
|
activeOpacity={0.9}>
|
||||||
|
|
||||||
|
|
|
@ -207,3 +207,30 @@ export const optionIdentificationScreen = {
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const optionPaiementFacture = {
|
||||||
|
title: I18n.t('PAIEMENT_FACTURE'),
|
||||||
|
subTitle: I18n.t('CHOOSE_OPTION'),
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
screen: route.walletDepot,
|
||||||
|
icon: 'water',
|
||||||
|
title: 'Paiement eau'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
screen: route.walletDepot,
|
||||||
|
icon: 'school',
|
||||||
|
title: 'Paiement école'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
screen: route.walletDepot,
|
||||||
|
icon: 'file-document',
|
||||||
|
title: 'Paiement électricité'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
screen: route.walletDepot,
|
||||||
|
icon: 'cellphone',
|
||||||
|
title: 'Paiement crédit téléphonique'
|
||||||
|
},
|
||||||
|
]
|
||||||
|
}
|
|
@ -129,6 +129,7 @@
|
||||||
"ADDRESS": "Address",
|
"ADDRESS": "Address",
|
||||||
"CREDIT": "Credit",
|
"CREDIT": "Credit",
|
||||||
"NEXT": "Next",
|
"NEXT": "Next",
|
||||||
|
"PREVIOUS": "Previous",
|
||||||
"SPONSOR_CODE": "Sponsor Code",
|
"SPONSOR_CODE": "Sponsor Code",
|
||||||
"SOLDE_UNVAIBLE": "solde unavailable",
|
"SOLDE_UNVAIBLE": "solde unavailable",
|
||||||
"TEXT_BIG_CREATE_AGENT_1": "Register as Agent",
|
"TEXT_BIG_CREATE_AGENT_1": "Register as Agent",
|
||||||
|
@ -184,6 +185,8 @@
|
||||||
"TRANSFER_COMMISSION_IMPOSSIBLE": "Commissions transfer impossible",
|
"TRANSFER_COMMISSION_IMPOSSIBLE": "Commissions transfer impossible",
|
||||||
"ERROR_FILTER_TEXT": "Problem encountered while filtering.",
|
"ERROR_FILTER_TEXT": "Problem encountered while filtering.",
|
||||||
"ERROR_TREATMENT_DEMAND": "Request processing error",
|
"ERROR_TREATMENT_DEMAND": "Request processing error",
|
||||||
|
"ERROR_IDENTIFICATION": "Identification error",
|
||||||
|
"SUCCESS_IDENTIFICATION": "Identification successful",
|
||||||
"REFUSER_DEMANDE": "Reject the request",
|
"REFUSER_DEMANDE": "Reject the request",
|
||||||
"ACCEPTER_DEMANDE": "Accept the request",
|
"ACCEPTER_DEMANDE": "Accept the request",
|
||||||
"REFUSED": "Refuse",
|
"REFUSED": "Refuse",
|
||||||
|
|
|
@ -133,6 +133,7 @@
|
||||||
"ADDRESS": "Adresse",
|
"ADDRESS": "Adresse",
|
||||||
"CREDIT": "Crédit",
|
"CREDIT": "Crédit",
|
||||||
"NEXT": "Suivant",
|
"NEXT": "Suivant",
|
||||||
|
"PREVIOUS": "Précédent",
|
||||||
"SPONSOR_CODE": "Code parrain",
|
"SPONSOR_CODE": "Code parrain",
|
||||||
"SOLDE_UNVAIBLE": "solde non disponible",
|
"SOLDE_UNVAIBLE": "solde non disponible",
|
||||||
"TEXT_BIG_CREATE_AGENT_1": "Inscrivez-vous en comme Agent",
|
"TEXT_BIG_CREATE_AGENT_1": "Inscrivez-vous en comme Agent",
|
||||||
|
@ -189,6 +190,8 @@
|
||||||
"TRANSFER_COMMISSION_IMPOSSIBLE": "Transfert des commissions impossible",
|
"TRANSFER_COMMISSION_IMPOSSIBLE": "Transfert des commissions impossible",
|
||||||
"ERROR_FILTER_TEXT": "Probleme rencontré lors du filtrage.",
|
"ERROR_FILTER_TEXT": "Probleme rencontré lors du filtrage.",
|
||||||
"ERROR_TREATMENT_DEMAND": "Erreur de traitement de la demande",
|
"ERROR_TREATMENT_DEMAND": "Erreur de traitement de la demande",
|
||||||
|
"ERROR_IDENTIFICATION": "Erreur d'identification",
|
||||||
|
"SUCCESS_IDENTIFICATION": "Identification réussie",
|
||||||
"REFUSER_DEMANDE": "Refuser la demande",
|
"REFUSER_DEMANDE": "Refuser la demande",
|
||||||
"REFUSED": "Refusé",
|
"REFUSED": "Refusé",
|
||||||
"ACCEPTER_DEMANDE": "Accepter la demande",
|
"ACCEPTER_DEMANDE": "Accepter la demande",
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
|
|
||||||
import { createIdentificationUrl } from "./IlinkConstants";
|
import { createIdentificationUrl, getNumberInformationUrl } from "./IlinkConstants";
|
||||||
import { store } from "../redux/store";
|
import { store } from "../redux/store";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import I18n from 'react-native-i18n'
|
import I18n from 'react-native-i18n'
|
||||||
import { fetchCreateIdentificationReset, fetchCreateIdentificationSuccess, fetchCreateIdentificationError, fetchCreateIdentificationPending } from "../redux/actions/IdentificationAction";
|
import { fetchCreateIdentificationReset, fetchCreateIdentificationSuccess, fetchCreateIdentificationError, fetchCreateIdentificationPending, fetchGetNumberInformationPending, fetchGetNumberInformationSuccess, fetchGetNumberInformationError, fetchGetNumberInformationReset } from "../redux/actions/IdentificationAction";
|
||||||
|
|
||||||
|
|
||||||
export const createIndentificationAction = (data) => {
|
export const createIndentificationAction = (data) => {
|
||||||
|
|
||||||
|
@ -44,3 +45,41 @@ export const createIndentificationResetAction = () => {
|
||||||
dispatch(fetchCreateIdentificationReset());
|
dispatch(fetchCreateIdentificationReset());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getNumberDetailAction = (number) => {
|
||||||
|
|
||||||
|
const auth = store.getState().authKeyReducer;
|
||||||
|
const authKey = auth !== null ? `${auth.authKey.token_type} ${auth.authKey.access_token}` : '';
|
||||||
|
|
||||||
|
return dispatch => {
|
||||||
|
dispatch(fetchGetNumberInformationPending());
|
||||||
|
|
||||||
|
axios({
|
||||||
|
url: `${getNumberInformationUrl}/${number}`,
|
||||||
|
method: 'GET',
|
||||||
|
headers: {
|
||||||
|
'Authorization': authKey,
|
||||||
|
'X-Localization': I18n.currentLocale()
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then(response => {
|
||||||
|
console.log(response);
|
||||||
|
dispatch(fetchGetNumberInformationSuccess(response));
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.log(error);
|
||||||
|
if (error.response)
|
||||||
|
dispatch(fetchGetNumberInformationError(error.response));
|
||||||
|
else if (error.request)
|
||||||
|
dispatch(fetchGetNumberInformationError(error.request))
|
||||||
|
else
|
||||||
|
dispatch(fetchGetNumberInformationError(error.message))
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const getNumberResetAction = () => {
|
||||||
|
return dispatch => {
|
||||||
|
dispatch(fetchGetNumberInformationReset());
|
||||||
|
}
|
||||||
|
}
|
|
@ -33,6 +33,7 @@ export const commissionAmount = testBaseUrl + '/walletService/transactions/commi
|
||||||
export const transactionUrl = testBaseUrl + '/walletService/transactions';
|
export const transactionUrl = testBaseUrl + '/walletService/transactions';
|
||||||
export const transferCommission = testBaseUrl + '/walletService/virement';
|
export const transferCommission = testBaseUrl + '/walletService/virement';
|
||||||
export const createIdentificationUrl = testBaseUrl + '/walletService/identifications';
|
export const createIdentificationUrl = testBaseUrl + '/walletService/identifications';
|
||||||
|
export const getNumberInformationUrl = testBaseUrl + '/walletService/identifications/verify';
|
||||||
export const authKeyUrl = testBaseUrl + '/oauth/token';
|
export const authKeyUrl = testBaseUrl + '/oauth/token';
|
||||||
export const videoUrl = "https://www.youtube.com/watch?v=wwGPDPsSLWY";
|
export const videoUrl = "https://www.youtube.com/watch?v=wwGPDPsSLWY";
|
||||||
export const MARKER_URL = baseUrl + "/interacted/LocationAction.php";
|
export const MARKER_URL = baseUrl + "/interacted/LocationAction.php";
|
||||||
|
|
|
@ -6375,6 +6375,13 @@ react-native-calendario@^0.2.10:
|
||||||
dependencies:
|
dependencies:
|
||||||
moment "^2.24.0"
|
moment "^2.24.0"
|
||||||
|
|
||||||
|
react-native-camera@^3.30.0:
|
||||||
|
version "3.30.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-3.30.0.tgz#b81ea540b06b40464a43931e86b870ffbeb280e6"
|
||||||
|
integrity sha512-rZorpBHXnc4MT9N6ddV4iC7h9dSUx4umtXvAKMkdYr3ZONlZcEfWxup7YCeAZ5wu4x43SvhSiTfYd8g0q+V0wg==
|
||||||
|
dependencies:
|
||||||
|
prop-types "^15.6.2"
|
||||||
|
|
||||||
react-native-cardview@^2.0.2:
|
react-native-cardview@^2.0.2:
|
||||||
version "2.0.5"
|
version "2.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/react-native-cardview/-/react-native-cardview-2.0.5.tgz#e7c112c15f7dafdf791e6ccba55b65a9e640ecef"
|
resolved "https://registry.yarnpkg.com/react-native-cardview/-/react-native-cardview-2.0.5.tgz#e7c112c15f7dafdf791e6ccba55b65a9e640ecef"
|
||||||
|
|
Loading…
Reference in New Issue