Merged in feat/sw-3556-sas-userinfo-scandic-keys (pull request #3033)

feat(SW-3556): Add Scandic user details to tracking userinfo if linked

* Add scandic details to userinfo if linked


Approved-by: Hrishikesh Vaipurkar
This commit is contained in:
Anton Gunnarsson
2025-10-30 12:26:57 +00:00
parent bc0bb91b13
commit eea21e67d9
2 changed files with 39 additions and 6 deletions

View File

@@ -55,6 +55,9 @@ type UserDataEurobonusLoggedIn = {
linkStatus?: string
loginAction?: "login success"
memberType: "sas-eurobonus"
memberId?: string
membershipNumber?: string
memberLevel?: MembershipLevel
}
export type TrackingUserData =

View File

@@ -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,
}
}