From 4970dfa2ed557c073bd4bdd992aa5db54332357c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matilda=20Landstr=C3=B6m?= Date: Tue, 4 Nov 2025 09:09:30 +0000 Subject: [PATCH] Merged in fix/LOY-439-boosted-by-sas-bug (pull request #3047) fix(LOY-439): fix "boosted by sas" issue * fix(LOY-439): fix "boosted by sas" issue Approved-by: Chuma Mcphoy (We Ahead) --- .../MembershipOverviewCard/SasBoostStatus.tsx | 23 +++++----------- .../Overview/MembershipOverviewCard/index.tsx | 27 +++++++------------ .../membershipOverviewCard.module.css | 8 +----- .../SAS/LinkedAccounts/index.tsx | 7 +++-- packages/trpc/lib/routers/user/helpers.ts | 4 +++ 5 files changed, 27 insertions(+), 42 deletions(-) diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/SasBoostStatus.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/SasBoostStatus.tsx index c9af8279d..6e9fff297 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/SasBoostStatus.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/SasBoostStatus.tsx @@ -2,37 +2,28 @@ import { dt } from "@scandic-hotels/common/dt" import { Divider } from "@scandic-hotels/design-system/Divider" import { Typography } from "@scandic-hotels/design-system/Typography" +import { getIntl } from "@/i18n" import { getLang } from "@/i18n/serverContext" -import { getSasTierExpirationDate } from "@/utils/sas" import styles from "./membershipOverviewCard.module.css" -import type { EurobonusMembership } from "@scandic-hotels/trpc/types/user" -import type { IntlShape } from "react-intl" - interface SasBoostStatusProps { - sasMembership: EurobonusMembership - intl: IntlShape + expiryDate: string } export default async function SasBoostStatus({ - sasMembership, - intl, + expiryDate, }: SasBoostStatusProps) { const lang = await getLang() - const tierExpirationDate = getSasTierExpirationDate(sasMembership) - - if (!tierExpirationDate || sasMembership.boostedByScandic) { - return null - } + const intl = await getIntl() const sasBoostExpiryText = intl.formatMessage( { id: "membershipOverViewCard.sasBoostedUntilDate", - defaultMessage: "Linked with SAS until {date}", + defaultMessage: "Boosted by SAS until {date}", }, { - date: dt(tierExpirationDate).locale(lang).format("D MMM YYYY"), + date: dt(expiryDate).locale(lang).format("D MMM YYYY"), } ) @@ -40,7 +31,7 @@ export default async function SasBoostStatus({ <> - {sasBoostExpiryText} + {sasBoostExpiryText} ) diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/index.tsx b/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/index.tsx index 6a53e1418..0170b0103 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/index.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/index.tsx @@ -2,13 +2,12 @@ import { MembershipLevelEnum } from "@scandic-hotels/common/constants/membership import { Divider } from "@scandic-hotels/design-system/Divider" import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import { Typography } from "@scandic-hotels/design-system/Typography" -import { getEurobonusMembership } from "@scandic-hotels/trpc/routers/user/helpers" +import { isBoostedBySas } from "@scandic-hotels/trpc/routers/user/helpers" import { membershipLevels } from "@/constants/membershipLevels" import MembershipLevelIcon from "@/components/Levels/Icon" import { getIntl } from "@/i18n" -import { getSasTierExpirationDate } from "@/utils/sas" import SasBoostStatus from "./SasBoostStatus" @@ -34,23 +33,16 @@ export default async function MembershipOverviewCard({ ? intl.formatNumber(user.membership.currentPoints) : intl.formatMessage({ id: "common.NA", defaultMessage: "N/A" }) - const sasMembership = user.loyalty - ? getEurobonusMembership(user.loyalty) - : null - - const showSasBoostIcon = - sasMembership && - getSasTierExpirationDate(sasMembership) && - !sasMembership.boostedByScandic + const boostedBySas = user.loyalty ? isBoostedBySas(user.loyalty) : null return (
- {showSasBoostIcon && ( + {boostedBySas ? ( - )} + ) : null} -

+

{intl.formatMessage( { id: "common.membershipLevelWithValue", @@ -60,9 +52,10 @@ export default async function MembershipOverviewCard({ )}

- {sasMembership && ( - - )} + + {user.loyalty && boostedBySas ? ( + + ) : null}
-

+

{intl.formatMessage({ id: "common.pointsToSpend", defaultMessage: "Points to spend", diff --git a/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/membershipOverviewCard.module.css b/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/membershipOverviewCard.module.css index 5fd69599f..56b4f148a 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/membershipOverviewCard.module.css +++ b/apps/scandic-web/components/Blocks/DynamicContent/Overview/MembershipOverviewCard/membershipOverviewCard.module.css @@ -16,16 +16,10 @@ margin-bottom: var(--Space-x05); } -.levelText, -.sasBoostText, -.pointsLabel { +.headingText { color: var(--Text-Brand-OnPrimary-3-Heading); } -.levelText { - text-transform: uppercase; -} - .divider { margin: var(--Space-x4) 0; } diff --git a/apps/scandic-web/components/Blocks/DynamicContent/SAS/LinkedAccounts/index.tsx b/apps/scandic-web/components/Blocks/DynamicContent/SAS/LinkedAccounts/index.tsx index d6ebeb5b1..ddacfd00a 100644 --- a/apps/scandic-web/components/Blocks/DynamicContent/SAS/LinkedAccounts/index.tsx +++ b/apps/scandic-web/components/Blocks/DynamicContent/SAS/LinkedAccounts/index.tsx @@ -5,7 +5,10 @@ import DiamondAddIcon from "@scandic-hotels/design-system/Icons/DiamondAddIcon" import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon" import SkeletonShimmer from "@scandic-hotels/design-system/SkeletonShimmer" import { Typography } from "@scandic-hotels/design-system/Typography" -import { getEurobonusMembership } from "@scandic-hotels/trpc/routers/user/helpers" +import { + getEurobonusMembership, + isBoostedBySas, +} from "@scandic-hotels/trpc/routers/user/helpers" import { SAS_EUROBONUS_TIER_TO_NAME_MAP, @@ -346,7 +349,7 @@ function calculateMatchState(loyalty: UserLoyalty): MatchState { if (eurobonusMembership?.boostedByScandic) return "boostedByScandic" if (!loyalty.tierBoostedBy) return "noBoost" - if (loyalty.tierBoostedBy === "SAS_EB") return "boostedBySAS" + if (isBoostedBySas(loyalty)) return "boostedBySAS" return "noBoost" } diff --git a/packages/trpc/lib/routers/user/helpers.ts b/packages/trpc/lib/routers/user/helpers.ts index 1dfe5d648..e8d458141 100644 --- a/packages/trpc/lib/routers/user/helpers.ts +++ b/packages/trpc/lib/routers/user/helpers.ts @@ -48,6 +48,10 @@ export function getFriendsMembership(userLoyalty: UserLoyalty) { return result } +export function isBoostedBySas(loyalty: UserLoyalty) { + return loyalty.tierBoostedBy === scandicMembershipTypes.SAS_EB +} + function isEurobonusMembership( membership: Membership ): membership is EurobonusMembership {