11/* eslint-disable prefer-destructuring */
2+ import _ from 'lodash' ;
23import React from 'react' ;
34import PT from 'prop-types' ;
45import { PrimaryButton } from 'topcoder-react-ui-kit' ;
@@ -13,18 +14,38 @@ export default class Preferences extends React.Component {
1314 constructor ( props ) {
1415 super ( props ) ;
1516 this . save = this . save . bind ( this ) ;
17+ this . loadOnboardingChecklistTrait = this . loadOnboardingChecklistTrait . bind ( this ) ;
1618 this . newsRef = React . createRef ( ) ;
19+
20+ const { userTraits } = props ;
21+ this . state = {
22+ onboardingChecklistTrait : this . loadOnboardingChecklistTrait ( userTraits ) ,
23+ } ;
1724 }
1825
1926 componentWillReceiveProps ( nextProps ) {
2027 const { isSaving, setIsSaving } = this . props ;
28+ const onboardingChecklistTrait = this . loadOnboardingChecklistTrait ( nextProps . userTraits ) ;
29+ this . setState ( {
30+ onboardingChecklistTrait,
31+ } ) ;
2132 if ( isSaving !== nextProps . isSaving ) {
2233 setTimeout ( ( ) => {
2334 setIsSaving ( false ) ;
2435 } , 600 ) ;
2536 }
2637 }
2738
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+
2849 save ( ) {
2950 const { isSaving, setIsSaving } = this . props ;
3051 if ( isSaving ) {
@@ -37,6 +58,14 @@ export default class Preferences extends React.Component {
3758
3859 render ( ) {
3960 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+ }
4069
4170 const saveBtn = (
4271 < PrimaryButton
@@ -61,7 +90,7 @@ export default class Preferences extends React.Component {
6190 email = { email }
6291 ref = { this . newsRef }
6392 />
64- < PreferenceList />
93+ < PreferenceList paymentSetupCompleted = { paymentSetupCompleted } />
6594 </ div >
6695 </ div >
6796 < div styleName = "footer" > { saveBtn } </ div >
@@ -78,4 +107,5 @@ Preferences.propTypes = {
78107 profile : PT . shape ( ) . isRequired ,
79108 isSaving : PT . bool ,
80109 setIsSaving : PT . func . isRequired ,
110+ userTraits : PT . array . isRequired ,
81111} ;
0 commit comments