Skip to content

Commit 636c1db

Browse files
committed
remove v3 refs
1 parent 548273d commit 636c1db

5 files changed

Lines changed: 22 additions & 24 deletions

File tree

apps/sim/app/(landing)/components/contact/contact-form.tsx

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useMutation } from '@tanstack/react-query'
77
import Link from 'next/link'
88
import { Combobox, Input, Textarea } from '@/components/emcn'
99
import { Check } from '@/components/emcn/icons'
10+
import { flattenFieldErrors } from '@/lib/api/contracts/primitives'
1011
import { getEnv } from '@/lib/core/config/env'
1112
import { captureClientEvent } from '@/lib/posthog/client'
1213
import {
@@ -130,15 +131,7 @@ export function ContactForm() {
130131
})
131132

132133
if (!parsed.success) {
133-
const fieldErrors = parsed.error.flatten().fieldErrors
134-
setErrors({
135-
name: fieldErrors.name?.[0],
136-
email: fieldErrors.email?.[0],
137-
company: fieldErrors.company?.[0],
138-
topic: fieldErrors.topic?.[0],
139-
subject: fieldErrors.subject?.[0],
140-
message: fieldErrors.message?.[0],
141-
})
134+
setErrors(flattenFieldErrors<ContactField>(parsed.error))
142135
setIsSubmitting(false)
143136
return
144137
}

apps/sim/app/(landing)/components/demo-request/demo-request-modal.tsx

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
Textarea,
1515
} from '@/components/emcn'
1616
import { Check } from '@/components/emcn/icons'
17+
import { flattenFieldErrors } from '@/lib/api/contracts/primitives'
1718
import { captureClientEvent } from '@/lib/posthog/client'
1819
import {
1920
DEMO_REQUEST_COMPANY_SIZE_OPTIONS,
@@ -129,15 +130,7 @@ export function DemoRequestModal({ children, theme = 'dark' }: DemoRequestModalP
129130
})
130131

131132
if (!parsed.success) {
132-
const fieldErrors = parsed.error.flatten().fieldErrors
133-
setErrors({
134-
firstName: fieldErrors.firstName?.[0],
135-
lastName: fieldErrors.lastName?.[0],
136-
companyEmail: fieldErrors.companyEmail?.[0],
137-
phoneNumber: fieldErrors.phoneNumber?.[0],
138-
companySize: fieldErrors.companySize?.[0],
139-
details: fieldErrors.details?.[0],
140-
})
133+
setErrors(flattenFieldErrors<DemoRequestField>(parsed.error))
141134
return
142135
}
143136

apps/sim/app/api/contact/route.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ export const POST = withRouteHandler(async (req: NextRequest) => {
124124

125125
if (!validationResult.success) {
126126
logger.warn(`[${requestId}] Invalid contact request data`, {
127-
errors: validationResult.error.format(),
127+
issues: validationResult.error.issues,
128128
})
129129
return NextResponse.json(
130130
{ error: getValidationErrorMessage(validationResult.error, 'Invalid request data') },

apps/sim/app/api/demo-requests/route.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import { createLogger } from '@sim/logger'
22
import { type NextRequest, NextResponse } from 'next/server'
3+
import { validationErrorResponse } from '@/lib/api/server'
34
import { env } from '@/lib/core/config/env'
45
import type { TokenBucketConfig } from '@/lib/core/rate-limiter'
56
import { RateLimiter } from '@/lib/core/rate-limiter'
@@ -50,12 +51,9 @@ export const POST = withRouteHandler(async (req: NextRequest) => {
5051

5152
if (!validationResult.success) {
5253
logger.warn(`[${requestId}] Invalid demo request data`, {
53-
errors: validationResult.error.format(),
54+
issues: validationResult.error.issues,
5455
})
55-
return NextResponse.json(
56-
{ error: 'Invalid request data', details: validationResult.error.format() },
57-
{ status: 400 }
58-
)
56+
return validationErrorResponse(validationResult.error, 'Invalid request data')
5957
}
6058

6159
const { firstName, lastName, companyEmail, phoneNumber, companySize, details } =

apps/sim/lib/api/contracts/primitives.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,20 @@ import { z } from 'zod'
22

33
export const unknownRecordSchema = z.record(z.string(), z.unknown())
44

5+
export function flattenFieldErrors<TFields extends string>(
6+
error: z.ZodError
7+
): Partial<Record<TFields, string>> {
8+
const result: Partial<Record<TFields, string>> = {}
9+
for (const issue of error.issues) {
10+
const field = issue.path[0]
11+
if (typeof field !== 'string') continue
12+
if (result[field as TFields] === undefined) {
13+
result[field as TFields] = issue.message
14+
}
15+
}
16+
return result
17+
}
18+
519
export const noInputSchema = z.object({}).strict()
620
export type NoInput = z.output<typeof noInputSchema>
721

0 commit comments

Comments
 (0)