@@ -169,6 +169,8 @@ const schema = z.object({
169169 technologiesOther : z . string ( ) . optional ( ) ,
170170 goals : z . string ( ) . optional ( ) ,
171171 goalsOther : z . string ( ) . optional ( ) ,
172+ workingOnPositions : z . string ( ) . optional ( ) ,
173+ goalsPositions : z . string ( ) . optional ( ) ,
172174} ) ;
173175
174176export const action : ActionFunction = async ( { request, params } ) => {
@@ -200,10 +202,25 @@ export const action: ActionFunction = async ({ request, params }) => {
200202 }
201203 }
202204
205+ const numberArraySchema = z . array ( z . number ( ) ) ;
206+ function safeParseNumberArray ( value : string | undefined ) : number [ ] | undefined {
207+ if ( ! value ) return undefined ;
208+ try {
209+ const result = numberArraySchema . safeParse ( JSON . parse ( value ) ) ;
210+ return result . success && result . data . length > 0 ? result . data : undefined ;
211+ } catch {
212+ return undefined ;
213+ }
214+ }
215+
203216 const onboardingData : Record < string , Prisma . InputJsonValue > = { } ;
204217
205218 const workingOn = safeParseStringArray ( submission . value . workingOn ) ;
206- if ( workingOn ) onboardingData . workingOn = workingOn ;
219+ if ( workingOn ) {
220+ onboardingData . workingOn = workingOn ;
221+ const workingOnPositions = safeParseNumberArray ( submission . value . workingOnPositions ) ;
222+ if ( workingOnPositions ) onboardingData . workingOnPositions = workingOnPositions ;
223+ }
207224
208225 if ( submission . value . workingOnOther ) {
209226 onboardingData . workingOnOther = submission . value . workingOnOther ;
@@ -216,7 +233,11 @@ export const action: ActionFunction = async ({ request, params }) => {
216233 if ( technologiesOther ) onboardingData . technologiesOther = technologiesOther ;
217234
218235 const goals = safeParseStringArray ( submission . value . goals ) ;
219- if ( goals ) onboardingData . goals = goals ;
236+ if ( goals ) {
237+ onboardingData . goals = goals ;
238+ const goalsPositions = safeParseNumberArray ( submission . value . goalsPositions ) ;
239+ if ( goalsPositions ) onboardingData . goalsPositions = goalsPositions ;
240+ }
220241
221242 if ( submission . value . goalsOther ) {
222243 onboardingData . goalsOther = submission . value . goalsOther ;
@@ -376,6 +397,13 @@ export default function Page() {
376397 < InputGroup >
377398 < Label > What are you working on?</ Label >
378399 < input type = "hidden" name = "workingOn" value = { JSON . stringify ( selectedWorkingOn ) } />
400+ < input
401+ type = "hidden"
402+ name = "workingOnPositions"
403+ value = { JSON . stringify (
404+ selectedWorkingOn . map ( ( v ) => shuffledWorkingOn . indexOf ( v ) + 1 )
405+ ) }
406+ />
379407 < MultiSelectField
380408 value = { selectedWorkingOn }
381409 setValue = { setSelectedWorkingOn }
@@ -421,6 +449,13 @@ export default function Page() {
421449 < InputGroup >
422450 < Label > What are you trying to do with Trigger.dev?</ Label >
423451 < input type = "hidden" name = "goals" value = { JSON . stringify ( selectedGoals ) } />
452+ < input
453+ type = "hidden"
454+ name = "goalsPositions"
455+ value = { JSON . stringify (
456+ selectedGoals . map ( ( v ) => shuffledGoals . indexOf ( v ) + 1 )
457+ ) }
458+ />
424459 < MultiSelectField
425460 value = { selectedGoals }
426461 setValue = { setSelectedGoals }
0 commit comments