@@ -185,40 +185,37 @@ export const action: ActionFunction = async ({ request, params }) => {
185185 const configurationId = url . searchParams . get ( "configurationId" ) ;
186186 const next = url . searchParams . get ( "next" ) ;
187187
188- try {
189- const stringArraySchema = z . array ( z . string ( ) ) ;
188+ const stringArraySchema = z . array ( z . string ( ) ) ;
189+
190+ function safeParseStringArray ( value : string | undefined ) : string [ ] | undefined {
191+ if ( ! value ) return undefined ;
192+ try {
193+ const result = stringArraySchema . safeParse ( JSON . parse ( value ) ) ;
194+ return result . success && result . data . length > 0 ? result . data : undefined ;
195+ } catch {
196+ return undefined ;
197+ }
198+ }
190199
191- const onboardingData : Record < string , Prisma . InputJsonValue > = { } ;
200+ const onboardingData : Record < string , Prisma . InputJsonValue > = { } ;
192201
193- if ( submission . value . workingOn ) {
194- const workingOn = stringArraySchema . parse ( JSON . parse ( submission . value . workingOn ) ) ;
195- if ( workingOn . length > 0 ) {
196- onboardingData . workingOn = workingOn ;
197- }
198- }
199- if ( submission . value . workingOnOther ) {
200- onboardingData . workingOnOther = submission . value . workingOnOther ;
201- }
202- if ( submission . value . technologies ) {
203- const technologies = stringArraySchema . parse ( JSON . parse ( submission . value . technologies ) ) ;
204- if ( technologies . length > 0 ) {
205- onboardingData . technologies = technologies ;
206- }
207- }
208- if ( submission . value . technologiesOther ) {
209- const technologiesOther = stringArraySchema . parse (
210- JSON . parse ( submission . value . technologiesOther )
211- ) ;
212- if ( technologiesOther . length > 0 ) {
213- onboardingData . technologiesOther = technologiesOther ;
214- }
215- }
216- if ( submission . value . goals ) {
217- const goals = stringArraySchema . parse ( JSON . parse ( submission . value . goals ) ) ;
218- if ( goals . length > 0 ) {
219- onboardingData . goals = goals ;
220- }
221- }
202+ const workingOn = safeParseStringArray ( submission . value . workingOn ) ;
203+ if ( workingOn ) onboardingData . workingOn = workingOn ;
204+
205+ if ( submission . value . workingOnOther ) {
206+ onboardingData . workingOnOther = submission . value . workingOnOther ;
207+ }
208+
209+ const technologies = safeParseStringArray ( submission . value . technologies ) ;
210+ if ( technologies ) onboardingData . technologies = technologies ;
211+
212+ const technologiesOther = safeParseStringArray ( submission . value . technologiesOther ) ;
213+ if ( technologiesOther ) onboardingData . technologiesOther = technologiesOther ;
214+
215+ const goals = safeParseStringArray ( submission . value . goals ) ;
216+ if ( goals ) onboardingData . goals = goals ;
217+
218+ try {
222219 const project = await createProject ( {
223220 organizationSlug : organizationSlug ,
224221 name : submission . value . projectName ,
0 commit comments