From bc81b18e858ab2cf1be967a2d0a219af501f2aa6 Mon Sep 17 00:00:00 2001 From: Christian Andolf Date: Thu, 13 Feb 2025 17:06:09 +0100 Subject: [PATCH] fix(LOY-88): expiration date is now not defaulted to todays date if it's missing, instead nothing is shown --- components/MyPages/Surprises/Slide.tsx | 46 +++++++++++++++----------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/components/MyPages/Surprises/Slide.tsx b/components/MyPages/Surprises/Slide.tsx index 9ffe0d98d..15a3787e0 100644 --- a/components/MyPages/Surprises/Slide.tsx +++ b/components/MyPages/Surprises/Slide.tsx @@ -10,35 +10,43 @@ import Card from "./Card" import styles from "./surprises.module.css" +import type { Dayjs } from "dayjs" + import type { SlideProps } from "@/types/components/blocks/surprises" export default function Slide({ surprise }: SlideProps) { const lang = useLang() const intl = useIntl() - const earliestExpirationDate = surprise.coupons?.reduce( - (earliestDate, coupon) => { - const expiresAt = dt(coupon.expiresAt) - return earliestDate.isBefore(expiresAt) ? earliestDate : expiresAt - }, - dt() - ) + const earliestExpirationDate = surprise.coupons + .map(({ expiresAt }) => expiresAt) + .filter((expiresAt): expiresAt is string => !!expiresAt) + .reduce((earliestDate: Dayjs | null, expiresAt) => { + const expiresAtDate = dt(expiresAt) + if (!earliestDate) { + return expiresAtDate + } + + return earliestDate.isBefore(expiresAtDate) ? earliestDate : expiresAtDate + }, null) return ( {surprise.description} -
- - {intl.formatMessage( - { id: "Valid through {expirationDate}" }, - { - expirationDate: dt(earliestExpirationDate) - .locale(lang) - .format("D MMM YYYY"), - } - )} - -
+ {earliestExpirationDate ? ( +
+ + {intl.formatMessage( + { id: "Valid through {expirationDate}" }, + { + expirationDate: dt(earliestExpirationDate) + .locale(lang) + .format("D MMM YYYY"), + } + )} + +
+ ) : null}
) }