@@ -113,7 +113,9 @@ async function updateRecord (record) {
113
113
}
114
114
115
115
/**
116
- *
116
+ * Get trait onboarding_checklist from member Api
117
+ * @param {string } handle the member handle
118
+ * @returns {promise } the result
117
119
*/
118
120
async function getOnboardingChecklist ( handle , token ) {
119
121
const url = `${ config . MEMBERS_API_URL } /${ handle } /traits?traitIds=onboarding_checklist`
@@ -128,39 +130,48 @@ async function getOnboardingChecklist (handle, token) {
128
130
if ( responseObject . length > 0 ) {
129
131
return responseObject [ 0 ] . traits . data
130
132
}
131
- } catch ( err ) { }
133
+ } catch ( err ) { }
132
134
133
135
return [ ]
134
136
}
135
137
138
+ /**
139
+ * update trait onboarding_checklist to indicate to consumers that showing the user
140
+ * identified by handle is not required
141
+ *
142
+ * @param {string } handle the handle of the member
143
+ * @param {string } message the skip reason
144
+ * @returns {promise }
145
+ */
136
146
async function addSkipOnboardingInOnboardingChecklist ( handle , message ) {
137
147
const token = await getM2MToken ( )
138
148
139
149
const existingOnboardingCheckilst = await getOnboardingChecklist ( handle , token )
140
150
const shouldCreate = existingOnboardingCheckilst . length === 0
141
151
142
- const skipOnboardingIndex = _ . findIndex ( existingOnboardingCheckilst , data => {
143
- if ( data [ 'skip_onboarding' ] != null ) {
144
- return true
145
- }
146
-
147
- return false
148
- } )
149
-
150
- const skipOnboardingData = {
151
- skip_onboarding : {
152
- value : true ,
152
+ const onboardingWizardIndex = _ . findIndex ( existingOnboardingCheckilst , data => data [ 'onboarding_wizard' ] != null )
153
+ const onboardingWizardData = {
154
+ onboarding_wizard : {
155
+ skip : true ,
153
156
date : new Date ( ) . getTime ( ) ,
154
- message
157
+ metadata : {
158
+ skipReason : message
159
+ } ,
160
+ status : 'pending_at_user'
155
161
}
156
162
}
157
163
158
164
let traitData = existingOnboardingCheckilst
159
165
160
- if ( skipOnboardingIndex === - 1 ) {
161
- traitData . push ( skipOnboardingData )
166
+ if ( onboardingWizardIndex === - 1 ) {
167
+ traitData . push ( onboardingWizardData )
162
168
} else {
163
- traitData [ skipOnboardingIndex ] = skipOnboardingData
169
+ // copy over existing status
170
+ if ( traitData [ onboardingWizardIndex ] . onboarding_wizard . status != null ) {
171
+ onboardingWizardData . onboarding_wizard . status = traitData [ onboardingWizardIndex ] . onboarding_wizard . status
172
+ }
173
+
174
+ traitData [ onboardingWizardIndex ] = onboardingWizardData
164
175
}
165
176
166
177
const payload = [ {
@@ -180,14 +191,14 @@ async function addSkipOnboardingInOnboardingChecklist (handle, message) {
180
191
181
192
try {
182
193
if ( shouldCreate ) {
183
- logger . info ( `Creating onboarding_checklist with skip_onboarding for user with handle ${ handle } .` )
194
+ logger . info ( `Creating onboarding_checklist with onboarding_wizard for user with handle ${ handle } .` )
184
195
await axios . post ( url , payload , requestConfig )
185
196
} else {
186
- logger . info ( `Updating onboarding_checklist to add skip_onboarding for user with handle ${ handle } .` )
197
+ logger . info ( `Updating onboarding_checklist to add onboarding_wizard for user with handle ${ handle } .` )
187
198
await axios . put ( url , payload , requestConfig )
188
199
}
189
200
} catch ( err ) {
190
- logger . error ( `Failed to set skip_onboarding in onboarding_checklist for user with handle ${ handle } . Failed with error ${ JSON . stringify ( err ) } ` )
201
+ logger . error ( `Failed to set onboarding_wizard in onboarding_checklist for user with handle ${ handle } . Failed with error ${ JSON . stringify ( err ) } ` )
191
202
}
192
203
}
193
204
0 commit comments