diff --git a/apps/partner-sas/components/BookingFlowProviders.tsx b/apps/partner-sas/components/BookingFlowProviders.tsx index e57e3b579..e7c621bf2 100644 --- a/apps/partner-sas/components/BookingFlowProviders.tsx +++ b/apps/partner-sas/components/BookingFlowProviders.tsx @@ -11,7 +11,7 @@ import type { ComponentProps, ReactNode } from "react" export function BookingFlowProviders({ children }: { children: ReactNode }) { const user = useBookingFlowUser() const isLinkedUser = - !!user.data && user.data.type === "partner-sas" && user.data.isLinked + !!user.data && user.data.type === "partner" && user.data.isLinked return ( { case "partner-sas": return CurrencyEnum.EUROBONUS default: + const _exhaustiveCheck: never = config.variant throw new Error(`Unknown variant: ${config.variant}`) } } diff --git a/packages/booking-flow/lib/bookingFlowContext.tsx b/packages/booking-flow/lib/bookingFlowContext.tsx index 66b20c7e0..2de5faf02 100644 --- a/packages/booking-flow/lib/bookingFlowContext.tsx +++ b/packages/booking-flow/lib/bookingFlowContext.tsx @@ -10,8 +10,8 @@ type BaseUser = { export type BookingFlowUser = | (BaseUser & { - type: "partner-sas" - partnerLoyaltyNumber: `EB${string}` + type: "partner" + partnerLoyaltyNumber: string isLinked: boolean }) | (BaseUser & { diff --git a/packages/booking-flow/lib/components/BookingFlowInput/errors.ts b/packages/booking-flow/lib/components/BookingFlowInput/errors.ts index 6c9fafbce..ced748bac 100644 --- a/packages/booking-flow/lib/components/BookingFlowInput/errors.ts +++ b/packages/booking-flow/lib/components/BookingFlowInput/errors.ts @@ -55,17 +55,23 @@ export function getErrorMessage( "Multi-room booking is not available with this booking code.", }) case bookingWidgetErrors.MULTIROOM_REWARD_NIGHT_UNAVAILABLE: - return variant === "partner-sas" - ? intl.formatMessage({ - id: "partnerSas.error.multiroomRewardNightUnavailable", - defaultMessage: - "Multi-room bookings are not available with EuroBonus points.", - }) - : intl.formatMessage({ + switch (variant) { + case "scandic": + return intl.formatMessage({ id: "error.multiroomRewardNightUnavailable", defaultMessage: "Multi-room booking is not available with reward night.", }) + case "partner-sas": + return intl.formatMessage({ + id: "partnerSas.error.multiroomRewardNightUnavailable", + defaultMessage: + "Multi-room bookings are not available with EuroBonus points.", + }) + default: + const _exhaustiveCheck: never = variant + throw new Error(`Unknown variant: ${variant}`) + } case bookingWidgetErrors.CODE_VOUCHER_REWARD_NIGHT_UNAVAILABLE: return intl.formatMessage({ id: "error.codeVoucherRewardNightUnavailable", diff --git a/packages/booking-flow/lib/components/BookingWidget/BookingWidgetForm/FormContent/RewardNight/index.tsx b/packages/booking-flow/lib/components/BookingWidget/BookingWidgetForm/FormContent/RewardNight/index.tsx index 2ce432eea..5d7590b98 100644 --- a/packages/booking-flow/lib/components/BookingWidget/BookingWidgetForm/FormContent/RewardNight/index.tsx +++ b/packages/booking-flow/lib/components/BookingWidget/BookingWidgetForm/FormContent/RewardNight/index.tsx @@ -165,6 +165,9 @@ function getRewardMessage(config: BookingFlowConfig, intl: IntlShape): string { id: "bookingWidget.reward.rewardNight", defaultMessage: "Reward Night", }) + default: + const _exhaustiveCheck: never = config.variant + throw new Error(`Unknown variant: ${config.variant}`) } } diff --git a/packages/booking-flow/lib/components/SignupPromo/Mobile.tsx b/packages/booking-flow/lib/components/SignupPromo/Mobile.tsx index 75af88ab7..1531bcd04 100644 --- a/packages/booking-flow/lib/components/SignupPromo/Mobile.tsx +++ b/packages/booking-flow/lib/components/SignupPromo/Mobile.tsx @@ -25,15 +25,19 @@ function Message() { const intl = useIntl() const config = useBookingFlowConfig() - if (config.variant === "partner-sas") { - return intl.formatMessage({ - id: "signup.toGetTheScandicMemberPrice", - defaultMessage: "Enter ID or join to get the Scandic Friends price.", - }) + switch (config.variant) { + case "partner-sas": + return intl.formatMessage({ + id: "signup.toGetTheScandicMemberPrice", + defaultMessage: "Enter ID or join to get the Scandic Friends price.", + }) + case "scandic": + return intl.formatMessage({ + id: "signup.joinOrLoginForMemberPricing", + defaultMessage: "Join or log in while booking for member pricing.", + }) + default: + const _exhaustiveCheck: never = config.variant + throw new Error(`Unknown variant: ${config.variant}`) } - - return intl.formatMessage({ - id: "signup.joinOrLoginForMemberPricing", - defaultMessage: "Join or log in while booking for member pricing.", - }) } diff --git a/packages/booking-flow/lib/stores/bookingCode-filter.ts b/packages/booking-flow/lib/stores/bookingCode-filter.ts index 2ad6415bf..73effd2a2 100644 --- a/packages/booking-flow/lib/stores/bookingCode-filter.ts +++ b/packages/booking-flow/lib/stores/bookingCode-filter.ts @@ -1,4 +1,3 @@ -// TODO should probably not need to export this outside package after moving entire booking flow import { create } from "zustand" export enum BookingCodeFilterEnum { diff --git a/packages/booking-flow/lib/utils/url.ts b/packages/booking-flow/lib/utils/url.ts index 3455398e0..0f64e6273 100644 --- a/packages/booking-flow/lib/utils/url.ts +++ b/packages/booking-flow/lib/utils/url.ts @@ -242,7 +242,6 @@ export function serializeBookingSearchParams( }) } -// TODO duplicated until full booking flow is migrated to booking-flow package export type DetailsBooking = { hotelId: string fromDate: string diff --git a/packages/trpc/lib/routers/user/query/userTrackingInfo.ts b/packages/trpc/lib/routers/user/query/userTrackingInfo.ts index d53e01db9..072cdd5ba 100644 --- a/packages/trpc/lib/routers/user/query/userTrackingInfo.ts +++ b/packages/trpc/lib/routers/user/query/userTrackingInfo.ts @@ -13,16 +13,17 @@ import type { TrackingUserData } from "../../types" export const userTrackingInfo = safeProtectedProcedure.query(async function ({ ctx, }) { - if (ctx.app === "partner-sas") { - const scandicUserToken = await ctx.getScandicUserToken() - return getSasEurobonusUserTrackingData(ctx.session, scandicUserToken) + switch (ctx.app) { + case "partner-sas": { + const scandicUserToken = await ctx.getScandicUserToken() + return getSasEurobonusUserTrackingData(ctx.session, scandicUserToken) + } + case "scandic-web": + return getScandicFriendsUserTrackingData(ctx.session) + default: + const _exhaustiveCheck: never = ctx.app + return { loginStatus: "Error" } as const } - - if (ctx.app === "scandic-web") { - return getScandicFriendsUserTrackingData(ctx.session) - } - - return { loginStatus: "Error" } as const }) async function getScandicFriendsUserTrackingData(session: Session | null) {