diff --git a/src/ageAssurance/useBeginAgeAssurance.ts b/src/ageAssurance/useBeginAgeAssurance.ts index 9614155698..897b03bbdb 100644 --- a/src/ageAssurance/useBeginAgeAssurance.ts +++ b/src/ageAssurance/useBeginAgeAssurance.ts @@ -1,3 +1,4 @@ +import {Platform} from 'react-native' import {type AppBskyAgeassuranceBegin, AtpAgent} from '@atproto/api' import {useMutation} from '@tanstack/react-query' @@ -8,9 +9,9 @@ import { PUBLIC_APPVIEW_DID, } from '#/lib/constants' import {isNetworkError} from '#/lib/hooks/useCleanError' -import {logger} from '#/logger' import {useAgent} from '#/state/session' import {usePatchAgeAssuranceServerState} from '#/ageAssurance' +import {logger} from '#/ageAssurance/logger' import {BLUESKY_PROXY_DID} from '#/env' import {useGeolocation} from '#/geolocation' @@ -29,8 +30,8 @@ export function useBeginAgeAssurance() { 'countryCode' | 'regionCode' >, ) { - const countryCode = geolocation?.countryCode - const regionCode = geolocation?.regionCode + const countryCode = geolocation?.countryCode?.toUpperCase() + const regionCode = geolocation?.regionCode?.toUpperCase() if (!countryCode) { throw new Error(`Geolocation not available, cannot init age assurance.`) } @@ -47,6 +48,16 @@ export function useBeginAgeAssurance() { appView.sessionManager.session.accessJwt = token appView.sessionManager.session.refreshJwt = '' + logger.metric( + 'ageAssurance:api:begin', + { + platform: Platform.OS, + countryCode, + regionCode, + }, + {statsig: false}, + ) + /* * 2s wait is good actually. Email sending takes a hot sec and this helps * ensure the email is ready for the user once they open their inbox. @@ -55,8 +66,8 @@ export function useBeginAgeAssurance() { 2e3, appView.app.bsky.ageassurance.begin({ ...props, - countryCode: countryCode.toUpperCase(), - regionCode: regionCode ? regionCode.toUpperCase() : undefined, + countryCode, + regionCode, }), ) diff --git a/src/geolocation/util.ts b/src/geolocation/util.ts index 9e842f5935..8fe52e3f16 100644 --- a/src/geolocation/util.ts +++ b/src/geolocation/util.ts @@ -1,5 +1,6 @@ import {type LocationGeocodedAddress} from 'expo-location' +import {isAndroid} from '#/platform/detection' import {logger} from '#/geolocation/logger' import {type Geolocation} from '#/geolocation/types' @@ -75,16 +76,29 @@ export function normalizeDeviceLocation( location: LocationGeocodedAddress, ): Geolocation { let {isoCountryCode, region} = location + let regionCode: string | undefined = region ?? undefined - if (region) { - if (isoCountryCode === 'US') { - region = USRegionNameToRegionCode[region] ?? region + /* + * Android doesn't give us ISO 3166-2 short codes. We need these for US + */ + if (isAndroid) { + if (region && isoCountryCode === 'US') { + /* + * We need short codes for US states. If we can't remap it, just drop it + * entirely for now. + */ + regionCode = USRegionNameToRegionCode[region] ?? undefined + } else { + /* + * Outside the US, we don't need regionCodes for now, so just drop it. + */ + regionCode = undefined } } return { countryCode: isoCountryCode ?? undefined, - regionCode: region ?? undefined, + regionCode, } } diff --git a/src/logger/metrics.ts b/src/logger/metrics.ts index 1f6c492da0..43690f1f7c 100644 --- a/src/logger/metrics.ts +++ b/src/logger/metrics.ts @@ -598,6 +598,11 @@ export type MetricEvents = { hasInitiatedPreviously: boolean } 'ageAssurance:initDialogSubmit': {} + 'ageAssurance:api:begin': { + platform: string + countryCode: string + regionCode?: string + } 'ageAssurance:initDialogError': { code: string }