diff --git a/apps/web/lib/fileValidation.ts b/apps/web/lib/fileValidation.ts index 47bc3ba1c1..f19fdf98bb 100644 --- a/apps/web/lib/fileValidation.ts +++ b/apps/web/lib/fileValidation.ts @@ -65,7 +65,8 @@ export const validateSingleFile = ( return !allowedFileExtensions || allowedFileExtensions.includes(extension as TAllowedFileExtension); }; -export const validateFileUploads = (data: TResponseData, questions?: TSurveyQuestion[]): boolean => { +export const validateFileUploads = (data?: TResponseData, questions?: TSurveyQuestion[]): boolean => { + if (!data) return true; for (const key of Object.keys(data)) { const question = questions?.find((q) => q.id === key); if (!question || question.type !== TSurveyQuestionTypeEnum.FileUpload) continue; diff --git a/apps/web/modules/api/v2/lib/question.ts b/apps/web/modules/api/v2/lib/question.ts index cad3cd78a8..232b2d01a0 100644 --- a/apps/web/modules/api/v2/lib/question.ts +++ b/apps/web/modules/api/v2/lib/question.ts @@ -33,10 +33,11 @@ export const validateOtherOptionLengthForMultipleChoice = ({ surveyQuestions, responseLanguage, }: { - responseData: TResponseData; + responseData?: TResponseData; surveyQuestions: TSurveyQuestion[]; responseLanguage?: string; }): string | undefined => { + if (!responseData) return undefined; for (const [questionId, answer] of Object.entries(responseData)) { const question = surveyQuestions.find((q) => q.id === questionId); if (!question) continue; diff --git a/packages/types/responses.ts b/packages/types/responses.ts index 9d552ae752..0f42499b5c 100644 --- a/packages/types/responses.ts +++ b/packages/types/responses.ts @@ -325,9 +325,9 @@ export const ZResponseInput = z.object({ export type TResponseInput = z.infer; export const ZResponseUpdateInput = z.object({ - finished: z.boolean(), + finished: z.boolean().optional(), endingId: z.string().nullish(), - data: ZResponseData, + data: ZResponseData.optional(), variables: ZResponseVariables.optional(), ttc: ZResponseTtc.optional(), language: z.string().optional(),