1
1
/* eslint-disable prefer-destructuring */
2
+ import _ from 'lodash' ;
2
3
import React from 'react' ;
3
4
import PT from 'prop-types' ;
4
5
import { PrimaryButton } from 'topcoder-react-ui-kit' ;
@@ -13,18 +14,38 @@ export default class Preferences extends React.Component {
13
14
constructor ( props ) {
14
15
super ( props ) ;
15
16
this . save = this . save . bind ( this ) ;
17
+ this . loadOnboardingChecklistTrait = this . loadOnboardingChecklistTrait . bind ( this ) ;
16
18
this . newsRef = React . createRef ( ) ;
19
+
20
+ const { userTraits } = props ;
21
+ this . state = {
22
+ onboardingChecklistTrait : this . loadOnboardingChecklistTrait ( userTraits ) ,
23
+ } ;
17
24
}
18
25
19
26
componentWillReceiveProps ( nextProps ) {
20
27
const { isSaving, setIsSaving } = this . props ;
28
+ const onboardingChecklistTrait = this . loadOnboardingChecklistTrait ( nextProps . userTraits ) ;
29
+ this . setState ( {
30
+ onboardingChecklistTrait,
31
+ } ) ;
21
32
if ( isSaving !== nextProps . isSaving ) {
22
33
setTimeout ( ( ) => {
23
34
setIsSaving ( false ) ;
24
35
} , 600 ) ;
25
36
}
26
37
}
27
38
39
+ /**
40
+ * Get onboarding checklist trait
41
+ * @param userTraits the all user traits
42
+ */
43
+ loadOnboardingChecklistTrait = ( userTraits ) => {
44
+ const trait = userTraits . filter ( t => t . traitId === 'onboarding_checklist' ) ;
45
+ const onboardingChecklist = trait . length === 0 ? { } : trait [ 0 ] ;
46
+ return _ . assign ( { } , onboardingChecklist ) ;
47
+ }
48
+
28
49
save ( ) {
29
50
const { isSaving, setIsSaving } = this . props ;
30
51
if ( isSaving ) {
@@ -37,6 +58,14 @@ export default class Preferences extends React.Component {
37
58
38
59
render ( ) {
39
60
const { profile : { email } , isSaving } = this . props ;
61
+ const { onboardingChecklistTrait } = this . state ;
62
+
63
+ const traitData = onboardingChecklistTrait . traits . data [ 0 ] ;
64
+ let paymentSetupCompleted = false ;
65
+ if ( _ . has ( traitData , 'user_payment_method' ) ) {
66
+ paymentSetupCompleted = ! _ . isEmpty ( traitData . user_payment_method . payment_method )
67
+ && traitData . user_payment_method . status === 'completed' ;
68
+ }
40
69
41
70
const saveBtn = (
42
71
< PrimaryButton
@@ -61,7 +90,7 @@ export default class Preferences extends React.Component {
61
90
email = { email }
62
91
ref = { this . newsRef }
63
92
/>
64
- < PreferenceList />
93
+ < PreferenceList paymentSetupCompleted = { paymentSetupCompleted } />
65
94
</ div >
66
95
</ div >
67
96
< div styleName = "footer" > { saveBtn } </ div >
@@ -78,4 +107,5 @@ Preferences.propTypes = {
78
107
profile : PT . shape ( ) . isRequired ,
79
108
isSaving : PT . bool ,
80
109
setIsSaving : PT . func . isRequired ,
110
+ userTraits : PT . array . isRequired ,
81
111
} ;
0 commit comments