1
0
mirror of https://github.com/kremalicious/metamask-extension.git synced 2024-12-23 09:52:26 +01:00

Dark Mode: Implement Metrics (#14455)

This commit is contained in:
David Walsh 2022-04-18 11:31:44 -05:00 committed by GitHub
parent 52b043c4f2
commit bcdd52f55a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 1 deletions

View File

@ -560,6 +560,7 @@ export default class MetaMetricsController {
[TRAITS.NUMBER_OF_TOKENS]: this._getNumberOfTokens(metamaskState), [TRAITS.NUMBER_OF_TOKENS]: this._getNumberOfTokens(metamaskState),
[TRAITS.OPENSEA_API_ENABLED]: metamaskState.openSeaEnabled, [TRAITS.OPENSEA_API_ENABLED]: metamaskState.openSeaEnabled,
[TRAITS.THREE_BOX_ENABLED]: metamaskState.threeBoxSyncingAllowed, [TRAITS.THREE_BOX_ENABLED]: metamaskState.threeBoxSyncingAllowed,
[TRAITS.THEME]: metamaskState.theme || 'default',
}; };
if (!this.previousTraits) { if (!this.previousTraits) {

View File

@ -681,6 +681,7 @@ describe('MetaMetricsController', function () {
openSeaEnabled: true, openSeaEnabled: true,
threeBoxSyncingAllowed: false, threeBoxSyncingAllowed: false,
useCollectibleDetection: false, useCollectibleDetection: false,
theme: 'default',
}); });
assert.deepEqual(traits, { assert.deepEqual(traits, {
@ -693,6 +694,7 @@ describe('MetaMetricsController', function () {
[TRAITS.NUMBER_OF_TOKENS]: 5, [TRAITS.NUMBER_OF_TOKENS]: 5,
[TRAITS.OPENSEA_API_ENABLED]: true, [TRAITS.OPENSEA_API_ENABLED]: true,
[TRAITS.THREE_BOX_ENABLED]: false, [TRAITS.THREE_BOX_ENABLED]: false,
[TRAITS.THEME]: 'default',
}); });
}); });
@ -713,6 +715,7 @@ describe('MetaMetricsController', function () {
identities: [{}, {}], identities: [{}, {}],
threeBoxSyncingAllowed: false, threeBoxSyncingAllowed: false,
useCollectibleDetection: false, useCollectibleDetection: false,
theme: 'default',
}); });
const updatedTraits = metaMetricsController._buildUserTraitsObject({ const updatedTraits = metaMetricsController._buildUserTraitsObject({
@ -732,6 +735,7 @@ describe('MetaMetricsController', function () {
identities: [{}, {}, {}], identities: [{}, {}, {}],
threeBoxSyncingAllowed: false, threeBoxSyncingAllowed: false,
useCollectibleDetection: false, useCollectibleDetection: false,
theme: 'default',
}); });
assert.deepEqual(updatedTraits, { assert.deepEqual(updatedTraits, {
@ -759,6 +763,7 @@ describe('MetaMetricsController', function () {
identities: [{}, {}], identities: [{}, {}],
threeBoxSyncingAllowed: false, threeBoxSyncingAllowed: false,
useCollectibleDetection: true, useCollectibleDetection: true,
theme: 'default',
}); });
const updatedTraits = metaMetricsController._buildUserTraitsObject({ const updatedTraits = metaMetricsController._buildUserTraitsObject({
@ -776,6 +781,7 @@ describe('MetaMetricsController', function () {
identities: [{}, {}], identities: [{}, {}],
threeBoxSyncingAllowed: false, threeBoxSyncingAllowed: false,
useCollectibleDetection: true, useCollectibleDetection: true,
theme: 'default',
}); });
assert.equal(updatedTraits, null); assert.equal(updatedTraits, null);

View File

@ -176,6 +176,7 @@
* we identify the opensea_api_enabled trait * we identify the opensea_api_enabled trait
* @property {'three_box_enabled'} THREE_BOX_ENABLED - when 3box feature is * @property {'three_box_enabled'} THREE_BOX_ENABLED - when 3box feature is
* toggled we identify the 3box_enabled trait * toggled we identify the 3box_enabled trait
* @property {'theme'} THEME - when the user's theme changes we identify the theme trait
*/ */
/** /**
@ -193,6 +194,7 @@ export const TRAITS = {
NUMBER_OF_TOKENS: 'number_of_tokens', NUMBER_OF_TOKENS: 'number_of_tokens',
OPENSEA_API_ENABLED: 'opensea_api_enabled', OPENSEA_API_ENABLED: 'opensea_api_enabled',
THREE_BOX_ENABLED: 'three_box_enabled', THREE_BOX_ENABLED: 'three_box_enabled',
THEME: 'theme',
}; };
/** /**
@ -215,6 +217,7 @@ export const TRAITS = {
* API enabled? * API enabled?
* @property {boolean} [three_box_enabled] - does the user have 3box sync * @property {boolean} [three_box_enabled] - does the user have 3box sync
* enabled? * enabled?
* @property {string} [theme] - which theme the user has selected
*/ */
// Mixpanel converts the zero address value to a truly anonymous event, which // Mixpanel converts the zero address value to a truly anonymous event, which

View File

@ -247,6 +247,17 @@ export default class ExperimentalTab extends PureComponent {
}, },
]; ];
const onChange = (newTheme) => {
this.context.trackEvent({
category: 'Settings',
event: 'Theme Changed',
properties: {
theme_selected: newTheme,
},
});
setTheme(newTheme);
};
return ( return (
<div className="settings-page__content-row"> <div className="settings-page__content-row">
<div className="settings-page__content-item"> <div className="settings-page__content-item">
@ -261,7 +272,7 @@ export default class ExperimentalTab extends PureComponent {
id="select-theme" id="select-theme"
options={themesOptions} options={themesOptions}
selectedOption={theme} selectedOption={theme}
onChange={async (newTheme) => setTheme(newTheme)} onChange={onChange}
/> />
</div> </div>
</div> </div>