feat: SW-65 Working on booking widget wrapper component

This commit is contained in:
Hrishikesh Vaipurkar
2024-07-25 16:04:35 +02:00
parent 9796ff29c5
commit 2afab6a33d
6 changed files with 175 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
"use server"
import { ZodError } from "zod"
import { bookingWidgetSchema } from "@/components/BookingWidget/schema"
import { type State, Status } from "@/types/components/myPages/myProfile/edit"
export async function updateBookingWidget(_prevState: State, values: FormData) {
try {
const data: Record<string, any> = Object.fromEntries(values.entries())
/**
* ToDo: Update the data parsing
*/
console.info(`Raw Data BW`)
console.log(data)
const parsedData = bookingWidgetSchema.safeParse(data)
if (parsedData.success) {
console.info(`Success`)
console.log(parsedData.data)
return {
message: "All good!",
status: Status.success,
}
} else {
console.error("Error parsing BW data")
console.error(parsedData.error)
return {
message: "Invalid data, parse failed!",
status: Status.error,
}
}
} catch (error) {
if (error instanceof ZodError) {
console.error(`ZodError handling profile edit`)
console.error(error)
return {
errors: error.issues.map((issue) => ({
message: `Server validation: ${issue.message}`,
path: issue.path.join("."),
})),
message: "Invalid form data",
status: Status.error,
}
}
console.error(`EditProfile Server Action Error`)
console.error(error)
return {
message: "Something went wrong. Please try again.",
status: Status.error,
}
}
}