diff --git a/packages/trpc/lib/routers/types.ts b/packages/trpc/lib/routers/types.ts index bcd4298e4..732152f8d 100644 --- a/packages/trpc/lib/routers/types.ts +++ b/packages/trpc/lib/routers/types.ts @@ -55,6 +55,9 @@ type UserDataEurobonusLoggedIn = { linkStatus?: string loginAction?: "login success" memberType: "sas-eurobonus" + memberId?: string + membershipNumber?: string + memberLevel?: MembershipLevel } export type TrackingUserData = diff --git a/packages/trpc/lib/routers/user/query/userTrackingInfo.ts b/packages/trpc/lib/routers/user/query/userTrackingInfo.ts index f56397d0f..add01ea40 100644 --- a/packages/trpc/lib/routers/user/query/userTrackingInfo.ts +++ b/packages/trpc/lib/routers/user/query/userTrackingInfo.ts @@ -15,7 +15,8 @@ export const userTrackingInfo = safeProtectedProcedure.query(async function ({ ctx, }) { if (ctx.app === "partner-sas") { - return getSasEurobonusUserTrackingData(ctx.session) + const scandicUserToken = await ctx.getScandicUserToken() + return getSasEurobonusUserTrackingData(ctx.session, scandicUserToken) } if (ctx.app === "scandic-web") { @@ -81,7 +82,10 @@ async function getScandicFriendsUserTrackingData(session: Session | null) { } } -async function getSasEurobonusUserTrackingData(session: Session | null) { +async function getSasEurobonusUserTrackingData( + session: Session | null, + scandicUserToken: string | null +) { const notLoggedInUserTrackingData: TrackingUserData = { loginStatus: "Non-logged in", memberType: "sas-eurobonus", @@ -92,10 +96,13 @@ async function getSasEurobonusUserTrackingData(session: Session | null) { } try { - const eurobonusProfile = await getEuroBonusProfileData({ - accessToken: session.token.access_token, - loginType: "eurobonus", - }) + const [eurobonusProfile, scandicData] = await Promise.all([ + getEuroBonusProfileData({ + accessToken: session.token.access_token, + loginType: "eurobonus", + }), + getScandicFriendsDataHelper(scandicUserToken), + ]) const loggedInUserTrackingData: TrackingUserData = { loginStatus: "logged in", @@ -105,6 +112,9 @@ async function getSasEurobonusUserTrackingData(session: Session | null) { eurobonusNumber: eurobonusProfile.eurobonusNumber, tier: eurobonusProfile.tier, linkStatus: eurobonusProfile.linkStatus, + memberId: scandicData?.memberId, + membershipNumber: scandicData?.membershipNumber, + memberLevel: scandicData?.memberLevel, } return loggedInUserTrackingData @@ -112,3 +122,23 @@ async function getSasEurobonusUserTrackingData(session: Session | null) { return notLoggedInUserTrackingData } } + +async function getScandicFriendsDataHelper(scandicUserToken: string | null) { + if (!scandicUserToken) return null + + const verifiedUserData = await getVerifiedUser({ + token: { access_token: scandicUserToken }, + }) + + if (!verifiedUserData || !verifiedUserData.loyalty) { + return null + } + + const membership = getFriendsMembership(verifiedUserData.loyalty) + + return { + memberId: verifiedUserData.profileId, + membershipNumber: membership?.membershipNumber, + memberLevel: membership?.membershipLevel, + } +}