mirror of
https://github.com/kremalicious/metamask-extension.git
synced 2024-11-24 02:58:09 +01:00
31175625b4
* 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
107 lines
2.9 KiB
JavaScript
107 lines
2.9 KiB
JavaScript
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/selectors'
|
|
import {
|
|
txDataSelector,
|
|
} from '../../../selectors/confirm-transaction'
|
|
import { getEnvironmentType } from '../../../../../app/scripts/lib/util'
|
|
import {
|
|
sendMetaMetricsEvent,
|
|
sendCountIsTrackable,
|
|
} from '../../utils/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)
|
|
|