fix(LOY-88): expiration date is now not defaulted to todays date if it's missing, instead nothing is shown

This commit is contained in:
Christian Andolf
2025-02-13 17:06:09 +01:00
parent 2791f07f67
commit bc81b18e85

View File

@@ -10,35 +10,43 @@ import Card from "./Card"
import styles from "./surprises.module.css" import styles from "./surprises.module.css"
import type { Dayjs } from "dayjs"
import type { SlideProps } from "@/types/components/blocks/surprises" import type { SlideProps } from "@/types/components/blocks/surprises"
export default function Slide({ surprise }: SlideProps) { export default function Slide({ surprise }: SlideProps) {
const lang = useLang() const lang = useLang()
const intl = useIntl() const intl = useIntl()
const earliestExpirationDate = surprise.coupons?.reduce( const earliestExpirationDate = surprise.coupons
(earliestDate, coupon) => { .map(({ expiresAt }) => expiresAt)
const expiresAt = dt(coupon.expiresAt) .filter((expiresAt): expiresAt is string => !!expiresAt)
return earliestDate.isBefore(expiresAt) ? earliestDate : expiresAt .reduce((earliestDate: Dayjs | null, expiresAt) => {
}, const expiresAtDate = dt(expiresAt)
dt() if (!earliestDate) {
) return expiresAtDate
}
return earliestDate.isBefore(expiresAtDate) ? earliestDate : expiresAtDate
}, null)
return ( return (
<Card title={surprise.label}> <Card title={surprise.label}>
<Body textAlign="center">{surprise.description}</Body> <Body textAlign="center">{surprise.description}</Body>
<div className={styles.badge}> {earliestExpirationDate ? (
<Caption> <div className={styles.badge}>
{intl.formatMessage( <Caption>
{ id: "Valid through {expirationDate}" }, {intl.formatMessage(
{ { id: "Valid through {expirationDate}" },
expirationDate: dt(earliestExpirationDate) {
.locale(lang) expirationDate: dt(earliestExpirationDate)
.format("D MMM YYYY"), .locale(lang)
} .format("D MMM YYYY"),
)} }
</Caption> )}
</div> </Caption>
</div>
) : null}
</Card> </Card>
) )
} }