mirror of
https://github.com/trezor/trezor-suite.git
synced 2026-03-25 00:27:12 +01:00
- Allow to report only redacted event before info about user confirmation of analytics is loaded or during initial lunch before we even asked user to allow analytics.
77 lines
2.5 KiB
TypeScript
77 lines
2.5 KiB
TypeScript
import {
|
|
analyticsActions,
|
|
selectAnalyticsInstanceId,
|
|
selectHasUserAllowedTracking,
|
|
selectIsAnalyticsConfirmed,
|
|
selectIsAnalyticsEnabled,
|
|
} from '@suite-common/analytics';
|
|
import { createThunk } from '@suite-common/redux-utils';
|
|
import { isDevelopEnv } from '@suite-native/config';
|
|
import { allowSentryReport, setSentryUser } from '@suite-native/sentry';
|
|
import { getTrackingRandomId } from '@trezor/analytics';
|
|
import { getCommitHash } from '@trezor/env-utils';
|
|
|
|
import { analytics } from './analytics';
|
|
import { EventType } from './constants';
|
|
|
|
const ACTION_PREFIX = '@suite-native/analytics';
|
|
|
|
export const enableAnalyticsThunk = createThunk(
|
|
`${ACTION_PREFIX}/enableAnalyticsThunk`,
|
|
(_, { dispatch }) => {
|
|
analytics.report({
|
|
type: EventType.SettingsDataPermission,
|
|
payload: { analyticsPermission: true },
|
|
});
|
|
allowSentryReport(true);
|
|
dispatch(analyticsActions.enableAnalytics());
|
|
},
|
|
);
|
|
|
|
export const disableAnalyticsThunk = createThunk(
|
|
`${ACTION_PREFIX}/disableAnalyticsThunk`,
|
|
(_, { dispatch }) => {
|
|
analytics.report(
|
|
{ type: EventType.SettingsDataPermission, payload: { analyticsPermission: false } },
|
|
{ force: true },
|
|
);
|
|
allowSentryReport(false);
|
|
dispatch(analyticsActions.disableAnalytics());
|
|
},
|
|
);
|
|
|
|
export const initAnalyticsThunk = createThunk(
|
|
`${ACTION_PREFIX}/init`,
|
|
(_, { dispatch, getState }) => {
|
|
const sessionId = getTrackingRandomId();
|
|
const instanceId = selectAnalyticsInstanceId(getState()) ?? getTrackingRandomId();
|
|
const userAllowedTracking = selectHasUserAllowedTracking(getState());
|
|
|
|
const isAnalyticsEnabled = selectIsAnalyticsEnabled(getState());
|
|
const isAnalyticsConfirmed = selectIsAnalyticsConfirmed(getState());
|
|
|
|
analytics.init(userAllowedTracking, {
|
|
instanceId,
|
|
sessionId,
|
|
environment: 'mobile',
|
|
commitId: getCommitHash(),
|
|
isDev: isDevelopEnv(),
|
|
callbacks: {
|
|
onEnable: () => dispatch(enableAnalyticsThunk()),
|
|
onDisable: () => dispatch(disableAnalyticsThunk()),
|
|
},
|
|
});
|
|
|
|
allowSentryReport(!!userAllowedTracking);
|
|
|
|
dispatch(
|
|
analyticsActions.initAnalytics({
|
|
instanceId,
|
|
sessionId,
|
|
enabled: isAnalyticsEnabled,
|
|
confirmed: isAnalyticsConfirmed,
|
|
}),
|
|
);
|
|
},
|
|
);
|