Skip to content

Commit ddb46c1

Browse files
author
Marcin Mazurek
committed
[DDW-1174] Add custom dimension to track legacy and hardware wallet usage
1 parent b5eecb1 commit ddb46c1

File tree

5 files changed

+56
-15
lines changed

5 files changed

+56
-15
lines changed

source/renderer/app/analytics/MatomoAnalyticsTracker.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ import { Environment } from '../../../common/types/environment.types';
44
import LocalStorageApi from '../api/utils/localStorage';
55
import { MatomoClient } from './MatomoClient';
66
import { NoopAnalyticsClient } from './noopAnalyticsClient';
7+
import AdaApi from '../api/api';
78

89
export class MatomoAnalyticsTracker implements AnalyticsTracker {
910
#analyticsClient: AnalyticsClient;
1011

1112
constructor(
1213
private environment: Environment,
13-
private localStorageApi: LocalStorageApi
14+
private localStorageApi: LocalStorageApi,
15+
private adaApi: AdaApi
1416
) {
1517
this.#analyticsClient = NoopAnalyticsClient;
1618
this.#enableTrackingIfAccepted();
@@ -19,6 +21,7 @@ export class MatomoAnalyticsTracker implements AnalyticsTracker {
1921
async enableTracking() {
2022
this.#analyticsClient = new MatomoClient(
2123
this.environment,
24+
this.adaApi,
2225
await this.localStorageApi.getUserID()
2326
);
2427
}

source/renderer/app/analytics/MatomoClient.ts

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,11 @@ import { AnalyticsClient } from './types';
33
import { Environment } from '../../../common/types/environment.types';
44
import {
55
ANALYTICS_API_ENDPOINT,
6-
CPU_DIMENSION_KEY,
76
DEV_MODE_SITE_MAP_ID,
87
NETWORK_TO_ANALYTICS_SITE_ID_MAP,
9-
OS_DIMENSION_KEY,
10-
RAM_DIMENSION_KEY,
11-
VERSION_DIMENSION_KEY,
128
} from '../config/analyticsConfig';
13-
import { formattedBytesToSize } from '../utils/formatters';
14-
import { getShortCpuDescription } from '../utils/getShortCpuDescription';
9+
import { getCustomDimensions } from './getCustomDimensions';
10+
import AdaApi from '../api/api';
1511

1612
/**
1713
* Matomo API reference:
@@ -20,24 +16,28 @@ import { getShortCpuDescription } from '../utils/getShortCpuDescription';
2016
export class MatomoClient implements AnalyticsClient {
2117
private matomoTracker: MatomoTracker;
2218

23-
constructor(private environment: Environment, private userId: string) {
19+
constructor(
20+
private environment: Environment,
21+
private adaApi: AdaApi,
22+
private userId: string
23+
) {
2424
this.matomoTracker = new MatomoTracker(
2525
this.getMatomoSiteId(environment),
2626
ANALYTICS_API_ENDPOINT
2727
);
2828
}
2929

3030
sendPageNavigationEvent = async (pageTitle: string) => {
31+
const customDimensions = await getCustomDimensions(
32+
this.environment,
33+
this.adaApi
34+
);
35+
3136
this.matomoTracker.track({
3237
_id: this.userId,
3338
action_name: pageTitle,
3439
url: this.getAnalyticsURL(),
35-
[CPU_DIMENSION_KEY]: getShortCpuDescription(
36-
this.environment.cpu[0]?.model
37-
),
38-
[RAM_DIMENSION_KEY]: formattedBytesToSize(this.environment.ram, 0),
39-
[OS_DIMENSION_KEY]: this.environment.os,
40-
[VERSION_DIMENSION_KEY]: this.environment.version,
40+
...customDimensions,
4141
});
4242
};
4343

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import { Environment } from '../../../common/types/environment.types';
2+
import {
3+
CPU_DIMENSION_KEY,
4+
OS_DIMENSION_KEY,
5+
RAM_DIMENSION_KEY,
6+
USES_HARDWARE_WALLET_DIMENSION_KEY,
7+
USES_LEGACY_WALLET_DIMENSION_KEY,
8+
VERSION_DIMENSION_KEY,
9+
} from '../config/analyticsConfig';
10+
import { getShortCpuDescription } from '../utils/getShortCpuDescription';
11+
import { formattedBytesToSize } from '../utils/formatters';
12+
import AdaApi from '../api/api';
13+
14+
const booleanToText = (flag: boolean) => (flag ? 'yes' : 'no');
15+
16+
export const getCustomDimensions = async (
17+
environment: Environment,
18+
adaApi: AdaApi
19+
) => {
20+
const usesByronWallets = (await adaApi.getWallets()).some(
21+
(wallet) => wallet.isLegacy
22+
);
23+
const usesHardwareWallets = (await adaApi.getWallets()).some(
24+
(wallet) => wallet.isHardwareWallet
25+
);
26+
27+
return {
28+
[CPU_DIMENSION_KEY]: getShortCpuDescription(environment.cpu[0]?.model),
29+
[RAM_DIMENSION_KEY]: formattedBytesToSize(environment.ram, 0),
30+
[OS_DIMENSION_KEY]: environment.os,
31+
[VERSION_DIMENSION_KEY]: environment.version,
32+
[USES_LEGACY_WALLET_DIMENSION_KEY]: booleanToText(usesByronWallets),
33+
[USES_HARDWARE_WALLET_DIMENSION_KEY]: booleanToText(usesHardwareWallets),
34+
};
35+
};

source/renderer/app/config/analyticsConfig.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,5 @@ export const CPU_DIMENSION_KEY = 'dimension1';
2626
export const RAM_DIMENSION_KEY = 'dimension2';
2727
export const OS_DIMENSION_KEY = 'dimension3';
2828
export const VERSION_DIMENSION_KEY = 'dimension4';
29+
export const USES_LEGACY_WALLET_DIMENSION_KEY = 'dimension5';
30+
export const USES_HARDWARE_WALLET_DIMENSION_KEY = 'dimension6';

source/renderer/app/index.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,8 @@ const initializeDaedalus = () => {
3737
const routingStore = new RouterStore();
3838
const analyticsTracker = new MatomoAnalyticsTracker(
3939
environment,
40-
api.localStorage
40+
api.localStorage,
41+
api.ada
4142
);
4243
const stores = setUpStores(api, actions, routingStore, analyticsTracker);
4344
const history = syncHistoryWithStore(hashHistory, routingStore);

0 commit comments

Comments
 (0)