Skip to content

Commit 71399dd

Browse files
authored
Merge branch 'develop' into chore/ddw-1169-preview-respin-node-1.35.4
2 parents af7e098 + af5db38 commit 71399dd

File tree

6 files changed

+56
-15
lines changed

6 files changed

+56
-15
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
### Features
66

7+
- Added custom dimension to track legacy and hardware wallets ([PR 3091](https://github.com/input-output-hk/daedalus/pull/3091))
78
- Implemented CPU name grouping mechanism for analytics ([PR 3089](https://github.com/input-output-hk/daedalus/pull/3089))
89
- Implemented rounding RAM size in analytics ([PR 3088](https://github.com/input-output-hk/daedalus/pull/3088))
910

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: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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 userWallets = await adaApi.getWallets();
21+
const usesByronWallets = userWallets.some((wallet) => wallet.isLegacy);
22+
const usesHardwareWallets = userWallets.some(
23+
(wallet) => wallet.isHardwareWallet
24+
);
25+
26+
return {
27+
[CPU_DIMENSION_KEY]: getShortCpuDescription(environment.cpu[0]?.model),
28+
[RAM_DIMENSION_KEY]: formattedBytesToSize(environment.ram, 0),
29+
[OS_DIMENSION_KEY]: environment.os,
30+
[VERSION_DIMENSION_KEY]: environment.version,
31+
[USES_LEGACY_WALLET_DIMENSION_KEY]: booleanToText(usesByronWallets),
32+
[USES_HARDWARE_WALLET_DIMENSION_KEY]: booleanToText(usesHardwareWallets),
33+
};
34+
};

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)