diff --git a/src/mobile-token/MobileTokenContext.tsx b/src/mobile-token/MobileTokenContext.tsx index 06e1dede3d..1414e6157d 100644 --- a/src/mobile-token/MobileTokenContext.tsx +++ b/src/mobile-token/MobileTokenContext.tsx @@ -9,7 +9,6 @@ import React, { import {useAuthContext} from '@atb/auth'; import {useRemoteConfigContext} from '@atb/RemoteConfigContext'; import { - IntercomTokenStatus, MobileTokenStatus, RemoteToken, Token, @@ -114,14 +113,26 @@ export const MobileTokenContextProvider: React.FC = ({children}) => { } = useLoadNativeTokenQuery(enabled, userId, traceId.current); useEffect(() => { - updateMetadata({ - 'AtB-Mobile-Token-Id': nativeToken ? nativeToken.tokenId : 'undefined', - 'AtB-Mobile-Token-Status': getAttestationStatus(nativeToken), - 'AtB-Mobile-Token-Error-Correlation-Id': nativeToken - ? 'undefined' - : traceId.current, - }); - }, [nativeToken, updateMetadata]); + if (nativeTokenStatus === 'success') { + const tokenStatus = nativeToken.isAttested() + ? 'attested' + : 'non-attested'; + + updateMetadata({ + 'AtB-Mobile-Token-Id': nativeToken.tokenId, + 'AtB-Mobile-Token-Status': tokenStatus, + 'AtB-Mobile-Token-Error-Correlation-Id': undefined, + }); + tokenService.postTokenStatus(nativeToken.tokenId, tokenStatus, undefined); + } else if (nativeTokenStatus === 'error') { + updateMetadata({ + 'AtB-Mobile-Token-Id': undefined, + 'AtB-Mobile-Token-Status': 'error', + 'AtB-Mobile-Token-Error-Correlation-Id': traceId.current, + }); + tokenService.postTokenStatus(undefined, 'error', traceId.current); + } + }, [nativeToken, nativeTokenStatus, updateMetadata]); const { data: remoteTokens, @@ -368,17 +379,3 @@ const getTokenToggleDetails = async () => { return undefined; } }; - -function getAttestationStatus( - nativeToken: ActivatedToken | undefined, -): IntercomTokenStatus { - if (nativeToken) { - if (nativeToken.isAttested()) { - return 'attested'; - } else { - return 'non-attested'; - } - } else { - return 'error'; - } -} diff --git a/src/mobile-token/tokenService.ts b/src/mobile-token/tokenService.ts index ce51f5864d..2a0bbdd8ec 100644 --- a/src/mobile-token/tokenService.ts +++ b/src/mobile-token/tokenService.ts @@ -40,6 +40,11 @@ export type TokenService = RemoteTokenService & { ) => Promise; validate: (token: ActivatedToken, traceId: string) => Promise; getTokenToggleDetails: () => Promise; + postTokenStatus: ( + tokenId: string | undefined, + tokenStatus: string, + traceId: string | undefined, + ) => Promise; }; const handleError = (err: any) => { @@ -232,4 +237,18 @@ export const tokenService: TokenService = { .catch(handleError), ); }, + postTokenStatus: async (tokenId, tokenStatus, traceId) => { + await client.post( + '/token/v1/status', + { + mobileTokenId: tokenId, + mobileTokenStatus: tokenStatus, + mobileTokenErrorCorrelationId: traceId, + }, + { + authWithIdToken: true, + timeout: 15000, + }, + ); + }, }; diff --git a/src/mobility/components/ScooterSheet.tsx b/src/mobility/components/ScooterSheet.tsx index 51ea80e69c..9098a2ed05 100644 --- a/src/mobility/components/ScooterSheet.tsx +++ b/src/mobility/components/ScooterSheet.tsx @@ -23,7 +23,7 @@ import {FormFactor} from '@atb/api/types/generated/mobility-types_v2'; import {useDoOnceOnItemReceived} from '../use-do-once-on-item-received'; import {useFeatureTogglesContext} from '@atb/modules/feature-toggles'; import {VehicleCard} from './VehicleCard'; -import {ShmoActionButtons} from './ShmoActionButtons'; +import {ShmoActionButton} from './ShmoActionButtons'; import {useOperators} from '../use-operators'; type Props = { @@ -32,6 +32,7 @@ type Props = { onReportParkingViolation: () => void; onVehicleReceived?: (vehicle: VehicleExtendedFragment) => void; navigateSupportCallback: () => void; + loginCallback: () => void; }; @@ -100,7 +101,7 @@ export const ScooterSheet = ({ mobilityOperators?.find((e) => e.id === operatorId) ?.isDeepIntegrationEnabled ? ( <> - +