@@ -28,15 +28,26 @@ function fetchOnfidoToken() {
28
28
}
29
29
30
30
/**
31
- * Privately used to update the additionalDetails object in Onyx (which will have various effects on the UI)
32
- *
33
31
* @param {Boolean } loading whether we are making the API call to validate the user's provided personal details
34
- * @param {String[] } [errorFields] an array of field names that should display errors in the UI
35
- * @param {String } [additionalErrorMessage] an additional error message to display in the UI
36
32
* @private
37
33
*/
38
- function setAdditionalDetailsStep ( loading , errorFields = null , additionalErrorMessage = '' ) {
39
- Onyx . merge ( ONYXKEYS . WALLET_ADDITIONAL_DETAILS , { loading, errorFields, additionalErrorMessage} ) ;
34
+ function setAdditionalDetailsLoading ( loading ) {
35
+ Onyx . merge ( ONYXKEYS . WALLET_ADDITIONAL_DETAILS , { loading} ) ;
36
+ }
37
+
38
+ /**
39
+ * @param {Object } errorFields
40
+ */
41
+ function setAdditionalDetailsErrors ( errorFields ) {
42
+ Onyx . merge ( ONYXKEYS . WALLET_ADDITIONAL_DETAILS , { errorFields : null } ) ;
43
+ Onyx . merge ( ONYXKEYS . WALLET_ADDITIONAL_DETAILS , { errorFields} ) ;
44
+ }
45
+
46
+ /**
47
+ * @param {String } additionalErrorMessage
48
+ */
49
+ function setAdditionalDetailsErrorMessage ( additionalErrorMessage ) {
50
+ Onyx . merge ( ONYXKEYS . WALLET_ADDITIONAL_DETAILS , { additionalErrorMessage} ) ;
40
51
}
41
52
42
53
/**
@@ -70,19 +81,9 @@ function activateWallet(currentStep, parameters) {
70
81
onfidoData = parameters . onfidoData ;
71
82
Onyx . merge ( ONYXKEYS . WALLET_ONFIDO , { error : '' , loading : true } ) ;
72
83
} else if ( currentStep === CONST . WALLET . STEP . ADDITIONAL_DETAILS ) {
73
- setAdditionalDetailsStep ( true ) ;
74
-
75
- // Personal details are heavily validated on the API side. We will only do a quick check to ensure the values
76
- // exist in some capacity and then stringify them.
77
- const errorFields = _ . reduce ( CONST . WALLET . REQUIRED_ADDITIONAL_DETAILS_FIELDS , ( missingFields , fieldName ) => (
78
- ! personalDetails [ fieldName ] ? [ ...missingFields , fieldName ] : missingFields
79
- ) , [ ] ) ;
80
-
81
- if ( ! _ . isEmpty ( errorFields ) ) {
82
- setAdditionalDetailsStep ( false , errorFields ) ;
83
- return ;
84
- }
85
-
84
+ setAdditionalDetailsLoading ( true ) ;
85
+ setAdditionalDetailsErrors ( null ) ;
86
+ setAdditionalDetailsErrorMessage ( '' ) ;
86
87
personalDetails = JSON . stringify ( parameters . personalDetails ) ;
87
88
} else if ( currentStep === CONST . WALLET . STEP . TERMS ) {
88
89
hasAcceptedTerms = parameters . hasAcceptedTerms ;
@@ -104,7 +105,15 @@ function activateWallet(currentStep, parameters) {
104
105
105
106
if ( currentStep === CONST . WALLET . STEP . ADDITIONAL_DETAILS ) {
106
107
if ( response . title === CONST . WALLET . ERROR . MISSING_FIELD ) {
107
- setAdditionalDetailsStep ( false , response . data . fieldNames ) ;
108
+ // Errors for missing fields are returned from the API as an array of strings so we are converting this to an
109
+ // object with field names as keys and boolean for values
110
+ const errorFields = _ . reduce ( response . data . fieldNames , ( errors , fieldName ) => ( {
111
+ ...errors ,
112
+ [ fieldName ] : true ,
113
+ } ) , { } ) ;
114
+ setAdditionalDetailsLoading ( false ) ;
115
+ setAdditionalDetailsErrors ( errorFields ) ;
116
+ setAdditionalDetailsErrorMessage ( '' ) ;
108
117
return ;
109
118
}
110
119
@@ -116,11 +125,15 @@ function activateWallet(currentStep, parameters) {
116
125
] ;
117
126
118
127
if ( _ . contains ( errorTitles , response . title ) ) {
119
- setAdditionalDetailsStep ( false , null , response . message ) ;
128
+ setAdditionalDetailsLoading ( false ) ;
129
+ setAdditionalDetailsErrorMessage ( response . message ) ;
130
+ setAdditionalDetailsErrors ( null ) ;
120
131
return ;
121
132
}
122
133
123
- setAdditionalDetailsStep ( false ) ;
134
+ setAdditionalDetailsLoading ( false ) ;
135
+ setAdditionalDetailsErrors ( null ) ;
136
+ setAdditionalDetailsErrorMessage ( '' ) ;
124
137
return ;
125
138
}
126
139
@@ -132,7 +145,9 @@ function activateWallet(currentStep, parameters) {
132
145
if ( currentStep === CONST . WALLET . STEP . ONFIDO ) {
133
146
Onyx . merge ( ONYXKEYS . WALLET_ONFIDO , { error : '' , loading : true } ) ;
134
147
} else if ( currentStep === CONST . WALLET . STEP . ADDITIONAL_DETAILS ) {
135
- setAdditionalDetailsStep ( false ) ;
148
+ setAdditionalDetailsLoading ( false ) ;
149
+ setAdditionalDetailsErrors ( null ) ;
150
+ setAdditionalDetailsErrorMessage ( '' ) ;
136
151
} else if ( currentStep === CONST . WALLET . STEP . TERMS ) {
137
152
Onyx . merge ( ONYXKEYS . WALLET_TERMS , { loading : false } ) ;
138
153
}
@@ -159,9 +174,18 @@ function fetchUserWallet() {
159
174
} ) ;
160
175
}
161
176
177
+ /**
178
+ * @param {Object } keyValuePair
179
+ */
180
+ function updateAdditionalDetailsDraft ( keyValuePair ) {
181
+ Onyx . merge ( ONYXKEYS . WALLET_ADDITIONAL_DETAILS_DRAFT , keyValuePair ) ;
182
+ }
183
+
162
184
export {
163
185
fetchOnfidoToken ,
164
- setAdditionalDetailsStep ,
165
186
activateWallet ,
166
187
fetchUserWallet ,
188
+ setAdditionalDetailsErrors ,
189
+ updateAdditionalDetailsDraft ,
190
+ setAdditionalDetailsErrorMessage ,
167
191
} ;
0 commit comments