Skip to content

Commit e67a202

Browse files
committed
Save the position of the randomized options to the DB
1 parent cd7619c commit e67a202

File tree

1 file changed

+37
-2
lines changed
  • apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new

1 file changed

+37
-2
lines changed

apps/webapp/app/routes/_app.orgs.$organizationSlug_.projects.new/route.tsx

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

174176
export 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

Comments
 (0)