aboutsummaryrefslogtreecommitdiffstats
path: root/ui/app/metametrics
diff options
context:
space:
mode:
Diffstat (limited to 'ui/app/metametrics')
-rw-r--r--ui/app/metametrics/metametrics.provider.js106
-rw-r--r--ui/app/metametrics/metametrics.util.js184
2 files changed, 0 insertions, 290 deletions
diff --git a/ui/app/metametrics/metametrics.provider.js b/ui/app/metametrics/metametrics.provider.js
deleted file mode 100644
index 5ff0294e5..000000000
--- a/ui/app/metametrics/metametrics.provider.js
+++ /dev/null
@@ -1,106 +0,0 @@
-import { Component } from 'react'
-import { connect } from 'react-redux'
-import PropTypes from 'prop-types'
-import { withRouter } from 'react-router-dom'
-import { compose } from 'recompose'
-import {
- getCurrentNetworkId,
- getSelectedAsset,
- getAccountType,
- getNumberOfAccounts,
- getNumberOfTokens,
-} from '../selectors'
-import {
- txDataSelector,
-} from '../selectors/confirm-transaction'
-import { getEnvironmentType } from '../../../app/scripts/lib/util'
-import {
- sendMetaMetricsEvent,
- sendCountIsTrackable,
-} from './metametrics.util'
-
-class MetaMetricsProvider extends Component {
- static propTypes = {
- network: PropTypes.string.isRequired,
- environmentType: PropTypes.string.isRequired,
- activeCurrency: PropTypes.string.isRequired,
- accountType: PropTypes.string.isRequired,
- metaMetricsSendCount: PropTypes.number.isRequired,
- children: PropTypes.object.isRequired,
- history: PropTypes.object.isRequired,
- }
-
- static childContextTypes = {
- metricsEvent: PropTypes.func,
- }
-
- constructor (props) {
- super(props)
-
- this.state = {
- previousPath: '',
- currentPath: window.location.href,
- }
-
- props.history.listen(locationObj => {
- this.setState({
- previousPath: this.state.currentPath,
- currentPath: window.location.href,
- })
- })
- }
-
- getChildContext () {
- const props = this.props
- const { pathname } = location
- const { previousPath, currentPath } = this.state
-
- return {
- metricsEvent: (config = {}, overrides = {}) => {
- const { eventOpts = {} } = config
- const { name = '' } = eventOpts
- const { pathname: overRidePathName = '' } = overrides
- const isSendFlow = Boolean(name.match(/^send|^confirm/) || overRidePathName.match(/send|confirm/))
-
- if (props.participateInMetaMetrics || config.isOptIn) {
- return sendMetaMetricsEvent({
- ...props,
- ...config,
- previousPath,
- currentPath,
- pathname,
- excludeMetaMetricsId: isSendFlow && !sendCountIsTrackable(props.metaMetricsSendCount + 1),
- ...overrides,
- })
- }
- },
- }
- }
-
- render () {
- return this.props.children
- }
-}
-
-const mapStateToProps = state => {
- const txData = txDataSelector(state) || {}
-
- return {
- network: getCurrentNetworkId(state),
- environmentType: getEnvironmentType(),
- activeCurrency: getSelectedAsset(state),
- accountType: getAccountType(state),
- confirmTransactionOrigin: txData.origin,
- metaMetricsId: state.metamask.metaMetricsId,
- participateInMetaMetrics: state.metamask.participateInMetaMetrics,
- metaMetricsSendCount: state.metamask.metaMetricsSendCount,
- numberOfTokens: getNumberOfTokens(state),
- numberOfAccounts: getNumberOfAccounts(state),
- }
-}
-
-module.exports = compose(
- withRouter,
- connect(mapStateToProps)
-)(MetaMetricsProvider)
-
diff --git a/ui/app/metametrics/metametrics.util.js b/ui/app/metametrics/metametrics.util.js
deleted file mode 100644
index 01984bd5e..000000000
--- a/ui/app/metametrics/metametrics.util.js
+++ /dev/null
@@ -1,184 +0,0 @@
-/* eslint camelcase: 0 */
-
-const ethUtil = require('ethereumjs-util')
-
-const inDevelopment = process.env.NODE_ENV === 'development'
-
-const METAMETRICS_BASE_URL = 'https://chromeextensionmm.innocraft.cloud/piwik.php'
-const METAMETRICS_REQUIRED_PARAMS = `?idsite=${inDevelopment ? 1 : 2}&rec=1&apiv=1`
-const METAMETRICS_BASE_FULL = METAMETRICS_BASE_URL + METAMETRICS_REQUIRED_PARAMS
-
-const METAMETRICS_TRACKING_URL = inDevelopment
- ? 'http://www.metamask.io/metametrics'
- : 'http://www.metamask.io/metametrics-prod'
-
-const METAMETRICS_CUSTOM_GAS_LIMIT_CHANGE = 'gasLimitChange'
-const METAMETRICS_CUSTOM_GAS_PRICE_CHANGE = 'gasPriceChange'
-const METAMETRICS_CUSTOM_FUNCTION_TYPE = 'functionType'
-const METAMETRICS_CUSTOM_RECIPIENT_KNOWN = 'recipientKnown'
-const METAMETRICS_CUSTOM_CONFIRM_SCREEN_ORIGIN = 'origin'
-const METAMETRICS_CUSTOM_FROM_NETWORK = 'fromNetwork'
-const METAMETRICS_CUSTOM_TO_NETWORK = 'toNetwork'
-const METAMETRICS_CUSTOM_ERROR_FIELD = 'errorField'
-const METAMETRICS_CUSTOM_ERROR_MESSAGE = 'errorMessage'
-const METAMETRICS_CUSTOM_RPC_NETWORK_ID = 'networkId'
-const METAMETRICS_CUSTOM_RPC_CHAIN_ID = 'chainId'
-
-const METAMETRICS_CUSTOM_NETWORK = 'network'
-const METAMETRICS_CUSTOM_ENVIRONMENT_TYPE = 'environmentType'
-const METAMETRICS_CUSTOM_ACTIVE_CURRENCY = 'activeCurrency'
-const METAMETRICS_CUSTOM_ACCOUNT_TYPE = 'accountType'
-const METAMETRICS_CUSTOM_NUMBER_OF_TOKENS = 'numberOfTokens'
-const METAMETRICS_CUSTOM_NUMBER_OF_ACCOUNTS = 'numberOfAccounts'
-
-const customVariableNameIdMap = {
- [METAMETRICS_CUSTOM_FUNCTION_TYPE]: 1,
- [METAMETRICS_CUSTOM_RECIPIENT_KNOWN]: 2,
- [METAMETRICS_CUSTOM_CONFIRM_SCREEN_ORIGIN]: 3,
- [METAMETRICS_CUSTOM_GAS_LIMIT_CHANGE]: 4,
- [METAMETRICS_CUSTOM_GAS_PRICE_CHANGE]: 5,
- [METAMETRICS_CUSTOM_FROM_NETWORK]: 1,
- [METAMETRICS_CUSTOM_TO_NETWORK]: 2,
- [METAMETRICS_CUSTOM_RPC_NETWORK_ID]: 1,
- [METAMETRICS_CUSTOM_RPC_CHAIN_ID]: 2,
- [METAMETRICS_CUSTOM_ERROR_FIELD]: 1,
- [METAMETRICS_CUSTOM_ERROR_MESSAGE]: 2,
-}
-
-const customDimensionsNameIdMap = {
- [METAMETRICS_CUSTOM_NETWORK]: 5,
- [METAMETRICS_CUSTOM_ENVIRONMENT_TYPE]: 6,
- [METAMETRICS_CUSTOM_ACTIVE_CURRENCY]: 7,
- [METAMETRICS_CUSTOM_ACCOUNT_TYPE]: 8,
- [METAMETRICS_CUSTOM_NUMBER_OF_TOKENS]: 9,
- [METAMETRICS_CUSTOM_NUMBER_OF_ACCOUNTS]: 10,
-}
-
-function composeUrlRefParamAddition (previousPath, confirmTransactionOrigin) {
- const externalOrigin = confirmTransactionOrigin && confirmTransactionOrigin !== 'MetaMask'
- return `&urlref=${externalOrigin ? 'EXTERNAL' : encodeURIComponent(previousPath.replace(/chrome-extension:\/\/\w+/, METAMETRICS_TRACKING_URL))}`
-}
-
-function composeCustomDimensionParamAddition (customDimensions) {
- const customDimensionParamStrings = Object.keys(customDimensions).reduce((acc, name) => {
- return [...acc, `dimension${customDimensionsNameIdMap[name]}=${customDimensions[name]}`]
- }, [])
- return `&${customDimensionParamStrings.join('&')}`
-}
-
-function composeCustomVarParamAddition (customVariables) {
- const customVariableIdValuePairs = Object.keys(customVariables).reduce((acc, name) => {
- return {
- [customVariableNameIdMap[name]]: [name, customVariables[name]],
- ...acc,
- }
- }, {})
- return `&cvar=${encodeURIComponent(JSON.stringify(customVariableIdValuePairs))}`
-}
-
-function composeParamAddition (paramValue, paramName) {
- return paramValue !== 0 && !paramValue
- ? ''
- : `&${paramName}=${paramValue}`
-}
-
-function composeUrl (config, permissionPreferences = {}) {
- const {
- eventOpts = {},
- customVariables = '',
- pageOpts = '',
- network,
- environmentType,
- activeCurrency,
- accountType,
- numberOfTokens,
- numberOfAccounts,
- previousPath = '',
- currentPath,
- metaMetricsId,
- confirmTransactionOrigin,
- url: configUrl,
- excludeMetaMetricsId,
- isNewVisit,
- } = config
- const base = METAMETRICS_BASE_FULL
-
- const e_c = composeParamAddition(eventOpts.category, 'e_c')
- const e_a = composeParamAddition(eventOpts.action, 'e_a')
- const e_n = composeParamAddition(eventOpts.name, 'e_n')
- const new_visit = isNewVisit ? `&new_visit=1` : ''
-
- const cvar = customVariables && composeCustomVarParamAddition(customVariables) || ''
-
- const action_name = ''
-
- const urlref = previousPath && composeUrlRefParamAddition(previousPath, confirmTransactionOrigin)
-
- const dimensions = !pageOpts.hideDimensions ? composeCustomDimensionParamAddition({
- network,
- environmentType,
- activeCurrency,
- accountType,
- numberOfTokens: customVariables && customVariables.numberOfTokens || numberOfTokens,
- numberOfAccounts: customVariables && customVariables.numberOfAccounts || numberOfAccounts,
- }) : ''
- const url = configUrl || `&url=${encodeURIComponent(currentPath.replace(/chrome-extension:\/\/\w+/, METAMETRICS_TRACKING_URL))}`
- const _id = metaMetricsId && !excludeMetaMetricsId ? `&_id=${metaMetricsId.slice(2, 18)}` : ''
- const rand = `&rand=${String(Math.random()).slice(2)}`
- const pv_id = `&pv_id=${ethUtil.bufferToHex(ethUtil.sha3(url || currentPath.match(/chrome-extension:\/\/\w+\/(.+)/)[0])).slice(2, 8)}`
- const uid = metaMetricsId && !excludeMetaMetricsId
- ? `&uid=${metaMetricsId.slice(2, 18)}`
- : excludeMetaMetricsId
- ? '&uid=0000000000000000'
- : ''
-
- return [ base, e_c, e_a, e_n, cvar, action_name, urlref, dimensions, url, _id, rand, pv_id, uid, new_visit ].join('')
-}
-
-export function sendMetaMetricsEvent (config, permissionPreferences) {
- return fetch(composeUrl(config, permissionPreferences), {
- 'headers': {},
- 'method': 'GET',
- })
-}
-
-export function verifyUserPermission (config, props) {
- const {
- eventOpts = {},
- } = config
- const { userPermissionPreferences } = props
- const {
- allowAll,
- allowNone,
- allowSendMetrics,
- } = userPermissionPreferences
-
- if (allowNone) {
- return false
- } else if (allowAll) {
- return true
- } else if (allowSendMetrics && eventOpts.name === 'send') {
- return true
- } else {
- return false
- }
-}
-
-const trackableSendCounts = {
- 1: true,
- 10: true,
- 30: true,
- 50: true,
- 100: true,
- 250: true,
- 500: true,
- 1000: true,
- 2500: true,
- 5000: true,
- 10000: true,
- 25000: true,
-}
-
-export function sendCountIsTrackable (sendCount) {
- return Boolean(trackableSendCounts[sendCount])
-}