diff options
author | Chi Kei Chan <chikeichan@gmail.com> | 2019-03-22 07:03:30 +0800 |
---|---|---|
committer | Dan J Miller <danjm.com@gmail.com> | 2019-03-22 07:03:30 +0800 |
commit | 31175625b446cb5d18b17db23018bca8b14d280c (patch) | |
tree | f54e159883deef003fb281267025edf796eb8004 /ui/app/metametrics | |
parent | 7287133e15fab22299e07704206e85bc855d1064 (diff) | |
download | tangerine-wallet-browser-31175625b446cb5d18b17db23018bca8b14d280c.tar tangerine-wallet-browser-31175625b446cb5d18b17db23018bca8b14d280c.tar.gz tangerine-wallet-browser-31175625b446cb5d18b17db23018bca8b14d280c.tar.bz2 tangerine-wallet-browser-31175625b446cb5d18b17db23018bca8b14d280c.tar.lz tangerine-wallet-browser-31175625b446cb5d18b17db23018bca8b14d280c.tar.xz tangerine-wallet-browser-31175625b446cb5d18b17db23018bca8b14d280c.tar.zst tangerine-wallet-browser-31175625b446cb5d18b17db23018bca8b14d280c.zip |
Folder restructure (#6304)
* Remove ui/app/keychains/
* Remove ui/app/img/ (unused images)
* Move conversion-util to helpers/utils/
* Move token-util to helpers/utils/
* Move /helpers/*.js inside /helpers/utils/
* Move util tests inside /helpers/utils/
* Renameand move confirm-transaction/util.js to helpers/utils/
* Move higher-order-components to helpers/higher-order-components/
* Move infura-conversion.json to helpers/constants/
* Move all utility functions to helpers/utils/
* Move pages directory to top-level
* Move all constants to helpers/constants/
* Move metametrics inside helpers/
* Move app and root inside pages/
* Move routes inside helpers/
* Re-organize ducks/
* Move reducers to ducks/
* Move selectors inside selectors/
* Move test out of test folder
* Move action, reducer, store inside store/
* Move ui components inside ui/
* Move UI components inside ui/
* Move connected components inside components/app/
* Move i18n-helper inside helpers/
* Fix unit tests
* Fix unit test
* Move pages components
* Rename routes component
* Move reducers to ducks/index
* Fix bad path in unit test
Diffstat (limited to 'ui/app/metametrics')
-rw-r--r-- | ui/app/metametrics/metametrics.provider.js | 106 | ||||
-rw-r--r-- | ui/app/metametrics/metametrics.util.js | 184 |
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]) -} |