From 1b15679e2839ba07269b0d1fdb689d6657ff684d Mon Sep 17 00:00:00 2001 From: Mathieu Artu Date: Fri, 21 Mar 2025 15:11:16 +0100 Subject: [PATCH 1/2] feat: add profile_id as a MetaMetrics trait --- .../UserProfileAnalyticsMetaData.types.ts | 2 ++ .../generateUserProfileAnalyticsMetaData.ts | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/app/util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types.ts b/app/util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types.ts index 44b586ef8e57..627076c6f001 100644 --- a/app/util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types.ts +++ b/app/util/metrics/UserSettingsAnalyticsMetaData/UserProfileAnalyticsMetaData.types.ts @@ -11,6 +11,7 @@ export enum UserProfileProperty { PRIMARY_CURRENCY = 'primary_currency', CURRENT_CURRENCY = 'current_currency', HAS_MARKETING_CONSENT = 'has_marketing_consent', + PROFILE_ID = 'profile_id', } export interface UserProfileMetaData { @@ -24,4 +25,5 @@ export interface UserProfileMetaData { [UserProfileProperty.PRIMARY_CURRENCY]?: string; [UserProfileProperty.CURRENT_CURRENCY]?: string; [UserProfileProperty.HAS_MARKETING_CONSENT]: string; + [UserProfileProperty.PROFILE_ID]?: string; } diff --git a/app/util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData.ts b/app/util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData.ts index efd84ab3bc2b..2c0bfe0d0f0a 100644 --- a/app/util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData.ts +++ b/app/util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData.ts @@ -18,7 +18,10 @@ const generateUserProfileAnalyticsMetaData = (): UserProfileMetaData => { const appThemeStyle = appTheme === 'os' ? Appearance.getColorScheme() : appTheme; const isDataCollectionForMarketingEnabled = - reduxState?.security?.dataCollectionForMarketing; + reduxState?.security?.dataCollectionForMarketing; + const profileId = + reduxState?.engine?.backgroundState?.AuthenticationController?.sessionData + ?.profile?.profileId; return { [UserProfileProperty.ENABLE_OPENSEA_API]: @@ -40,9 +43,11 @@ const generateUserProfileAnalyticsMetaData = (): UserProfileMetaData => { : UserProfileProperty.OFF, [UserProfileProperty.SECURITY_PROVIDERS]: preferencesController?.securityAlertsEnabled ? 'blockaid' : '', - [UserProfileProperty.HAS_MARKETING_CONSENT]: isDataCollectionForMarketingEnabled + [UserProfileProperty.HAS_MARKETING_CONSENT]: + isDataCollectionForMarketingEnabled ? UserProfileProperty.ON : UserProfileProperty.OFF, + [UserProfileProperty.PROFILE_ID]: profileId || '', }; }; From 756d585105d158f35f06aabdfe4f3cf908605c59 Mon Sep 17 00:00:00 2001 From: Mathieu Artu Date: Fri, 21 Mar 2025 15:12:27 +0100 Subject: [PATCH 2/2] fix: update UT --- ...nerateUserProfileAnalyticsMetaData.test.ts | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/app/util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData.test.ts b/app/util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData.test.ts index 36ec37391aba..0ff81cba4f44 100644 --- a/app/util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData.test.ts +++ b/app/util/metrics/UserSettingsAnalyticsMetaData/generateUserProfileAnalyticsMetaData.test.ts @@ -1,13 +1,13 @@ import generateUserProfileAnalyticsMetaData from './generateUserProfileAnalyticsMetaData'; import { UserProfileProperty } from './UserProfileAnalyticsMetaData.types'; -import {Appearance} from 'react-native'; +import { Appearance } from 'react-native'; const mockGetState = jest.fn(); jest.mock('../../../store', () => ({ - store: { - getState: jest.fn(() => mockGetState()), - }, - })); + store: { + getState: jest.fn(() => mockGetState()), + }, +})); const mockIsMetricsEnabled = jest.fn(); jest.mock('../../../core/Analytics', () => ({ @@ -29,6 +29,13 @@ describe('generateUserProfileAnalyticsMetaData', () => { isMultiAccountBalancesEnabled: false, securityAlertsEnabled: true, }, + AuthenticationController: { + sessionData: { + profile: { + profileId: '12345', + }, + }, + }, }, }, user: { appTheme: 'os' }, @@ -48,6 +55,7 @@ describe('generateUserProfileAnalyticsMetaData', () => { [UserProfileProperty.MULTI_ACCOUNT_BALANCE]: UserProfileProperty.OFF, [UserProfileProperty.SECURITY_PROVIDERS]: 'blockaid', [UserProfileProperty.HAS_MARKETING_CONSENT]: UserProfileProperty.ON, + [UserProfileProperty.PROFILE_ID]: '12345', }); }); @@ -55,10 +63,15 @@ describe('generateUserProfileAnalyticsMetaData', () => { [UserProfileProperty.ON, true], [UserProfileProperty.OFF, false], ])('returns marketing consent "%s"', (expected, stateConsentValue) => { - mockGetState.mockReturnValue({ ...mockState, security: { dataCollectionForMarketing: stateConsentValue } }); + mockGetState.mockReturnValue({ + ...mockState, + security: { dataCollectionForMarketing: stateConsentValue }, + }); const metadata = generateUserProfileAnalyticsMetaData(); - expect(metadata[UserProfileProperty.HAS_MARKETING_CONSENT]).toEqual(expected); + expect(metadata[UserProfileProperty.HAS_MARKETING_CONSENT]).toEqual( + expected, + ); }); it('returns default metadata when missing preferences controller', () => {