Merged in fix/LOY-358-SAS-expiry-date (pull request #2813)

fix(LOY-358): Proper SAS tier expiration date check

* fix(LOY-358): Proper SAS tier expiration date check


Approved-by: Erik Tiekstra
This commit is contained in:
Chuma Mcphoy (We Ahead)
2025-09-18 13:39:37 +00:00
parent 948c86479a
commit cc99f26727
4 changed files with 20 additions and 7 deletions

View File

@@ -3,6 +3,7 @@ import { Divider } from "@scandic-hotels/design-system/Divider"
import { Typography } from "@scandic-hotels/design-system/Typography"
import { getLang } from "@/i18n/serverContext"
import { getSasTierExpirationDate } from "@/utils/sas"
import styles from "./membershipOverviewCard.module.css"
@@ -19,8 +20,9 @@ export default async function SasBoostStatus({
intl,
}: SasBoostStatusProps) {
const lang = await getLang()
const tierExpirationDate = getSasTierExpirationDate(sasMembership)
if (!sasMembership.boostedTierExpires || sasMembership.boostedByScandic) {
if (!tierExpirationDate || sasMembership.boostedByScandic) {
return null
}
@@ -29,9 +31,7 @@ export default async function SasBoostStatus({
defaultMessage: "Boosted by SAS until {date}",
},
{
date: dt(sasMembership.boostedTierExpires)
.locale(lang)
.format("D MMM YYYY"),
date: dt(tierExpirationDate).locale(lang).format("D MMM YYYY"),
}
)

View File

@@ -8,6 +8,7 @@ import { membershipLevels } from "@/constants/membershipLevels"
import MembershipLevelIcon from "@/components/Levels/Icon"
import { getIntl } from "@/i18n"
import { getSasTierExpirationDate } from "@/utils/sas"
import SasBoostStatus from "./SasBoostStatus"
@@ -38,7 +39,9 @@ export default async function MembershipOverviewCard({
: null
const showSasBoostIcon =
sasMembership?.boostedTierExpires && !sasMembership.boostedByScandic
sasMembership &&
getSasTierExpirationDate(sasMembership) &&
!sasMembership.boostedByScandic
return (
<section className={styles.card} aria-labelledby="membership-level">

View File

@@ -17,6 +17,7 @@ import SectionContainer from "@/components/Section/Container"
import SectionHeader from "@/components/Section/Header"
import SectionLink from "@/components/Section/Link"
import { getIntl } from "@/i18n"
import { getSasTierExpirationDate } from "@/utils/sas"
import { UnlinkSAS } from "./UnlinkSAS"
@@ -82,8 +83,7 @@ async function MatchedAccountInfo() {
eurobonusMembership.boostedTier || eurobonusMembership.tier
]
const sasMembershipNumber = eurobonusMembership.membershipNumber
const sasTierExpirationDate =
eurobonusMembership.boostedTierExpires || eurobonusMembership.tierExpires
const sasTierExpirationDate = getSasTierExpirationDate(eurobonusMembership)
const scandicLevelName = TIER_TO_FRIEND_MAP[friendsMembership.membershipLevel]
const scandicExpirationDate = friendsMembership.tierExpirationDate

View File

@@ -0,0 +1,10 @@
import type { EurobonusMembership } from "@scandic-hotels/trpc/types/user"
/**
* Get SAS tier expiration date, checking boostedTierExpires first, then falling back to tierExpires
*/
export function getSasTierExpirationDate(
sasMembership: EurobonusMembership
): string | null {
return sasMembership.boostedTierExpires || sasMembership.tierExpires
}