refactor: infer types from zod validation
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
import { Lang } from "@/constants/languages"
|
||||
import { serverClient } from "@/lib/trpc/server"
|
||||
|
||||
import { getValueFromContactConfig } from "@/utils/contactConfig"
|
||||
|
||||
import styles from "./contactRow.module.css"
|
||||
|
||||
import { Lang } from "@/constants/languages"
|
||||
import type { ContactFields } from "@/types/requests/contactConfig"
|
||||
|
||||
export default async function ContactRow({
|
||||
@@ -16,6 +17,11 @@ export default async function ContactRow({
|
||||
})
|
||||
|
||||
const val = getValueFromContactConfig(contact.contact_field, data)
|
||||
|
||||
if (!val) {
|
||||
return null
|
||||
}
|
||||
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
<h4 className={styles.title}>{contact.display_text}</h4>
|
||||
|
||||
@@ -1,20 +1,28 @@
|
||||
import { _ } from "@/lib/translation"
|
||||
|
||||
import Title from "@/components/Title"
|
||||
|
||||
import ContactRow from "./ContactRow"
|
||||
|
||||
import styles from "./contact.module.css"
|
||||
|
||||
import { JoinLoyaltyContactTypenameEnum } from "@/types/requests/loyaltyPage"
|
||||
import type { ContactProps } from "@/types/components/loyalty/sidebar"
|
||||
import { JoinLoyaltyContactTypenameEnum } from "@/types/requests/loyaltyPage"
|
||||
|
||||
export default async function Contact({ contactBlock }: ContactProps) {
|
||||
return (
|
||||
<div className={styles.contactContainer}>
|
||||
<Title level="h5">Contact us</Title>
|
||||
<Title level="h5">{_("Contact us")}</Title>
|
||||
<section>
|
||||
{contactBlock.map(({ contact, __typename }) => {
|
||||
{contactBlock.map(({ contact, __typename }, i) => {
|
||||
switch (__typename) {
|
||||
case JoinLoyaltyContactTypenameEnum.LoyaltyPageSidebarJoinLoyaltyContactBlockContactContact:
|
||||
return <ContactRow contact={contact} />
|
||||
return (
|
||||
<ContactRow
|
||||
key={`${contact.display_text}-i`}
|
||||
contact={contact}
|
||||
/>
|
||||
)
|
||||
default:
|
||||
return null
|
||||
}
|
||||
|
||||
@@ -9,13 +9,9 @@ import Contact from "./Contact"
|
||||
|
||||
import styles from "./joinLoyalty.module.css"
|
||||
|
||||
import type { JoinLoyaltyContact } from "@/types/requests/loyaltyPage"
|
||||
import type { JoinLoyaltyContactProps } from "@/types/components/loyalty/sidebar"
|
||||
|
||||
export default function JoinLoyaltyContact({
|
||||
block,
|
||||
}: {
|
||||
block: JoinLoyaltyContact["join_loyalty_contact"]
|
||||
}) {
|
||||
export default function JoinLoyaltyContact({ block }: JoinLoyaltyContactProps) {
|
||||
return (
|
||||
<div className={styles.container}>
|
||||
<div className={styles.wrapper}>
|
||||
|
||||
Reference in New Issue
Block a user