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

Use Segment for web3 usage metrics; fix background Segment bugs (#9525)

* Use segment for window.web3 usage metrics
* Add Segment referrer information
* Fix track segment event bug
* Fix missing category bug in tx segment event

Co-authored-by: Mark Stacey <markjstacey@gmail.com>
This commit is contained in:
Erik Marks 2020-10-08 11:00:56 -07:00 committed by GitHub
parent a301ce92d8
commit 7870d6d194
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 18 additions and 7 deletions

View File

@ -861,6 +861,7 @@ export default class TransactionController extends EventEmitter {
this._trackSegmentEvent({ this._trackSegmentEvent({
event: 'Swap Completed', event: 'Swap Completed',
category: 'swaps',
properties: { properties: {
...txMeta.swapMetaData, ...txMeta.swapMetaData,
token_to_amount_received: tokensReceived, token_to_amount_received: tokensReceived,

View File

@ -45,10 +45,12 @@ function logWeb3UsageHandler (
} }
if (!recordedWeb3Usage[origin][name]) { if (!recordedWeb3Usage[origin][name]) {
recordedWeb3Usage[origin][name] = true recordedWeb3Usage[origin][name] = true
sendMetrics({ sendMetrics({
action, event: `Website Accessed window.web3`,
name, category: 'inpage_provider',
customVariables: { origin }, properties: { action, web3Property: name },
referrerUrl: origin,
}) })
} }

View File

@ -64,6 +64,7 @@ export function getTrackSegmentEvent (
* @param {string} event - The event name. * @param {string} event - The event name.
* @param {string} category - The event category. * @param {string} category - The event category.
* @param {Object} [properties] - The event properties. * @param {Object} [properties] - The event properties.
* @param {string} [referrerUrl] - The event's referrer URL, if relevant.
* @param {boolean} [excludeMetaMetricsId] - `true` if the user's MetaMetrics id should * @param {boolean} [excludeMetaMetricsId] - `true` if the user's MetaMetrics id should
* not be included, and `false` otherwise. Default: `true` * not be included, and `false` otherwise. Default: `true`
*/ */
@ -72,6 +73,7 @@ export function getTrackSegmentEvent (
category, category,
properties = {}, properties = {},
excludeMetaMetricsId = true, excludeMetaMetricsId = true,
referrerUrl,
}) { }) {
if (!event || !category) { if (!event || !category) {
throw new Error('Must specify event and category.') throw new Error('Must specify event and category.')
@ -99,6 +101,12 @@ export function getTrackSegmentEvent (
trackOptions.userId = metaMetricsId trackOptions.userId = metaMetricsId
} }
if (referrerUrl) {
trackOptions.context.referrer = {
url: referrerUrl,
}
}
segment.track(trackOptions) segment.track(trackOptions)
} }
} }

View File

@ -47,7 +47,7 @@ export default function setupWeb3 (log) {
const name = stringifyKey(key) const name = stringifyKey(key)
window.ethereum.request({ window.ethereum.request({
method: 'metamask_logInjectedWeb3Usage', method: 'metamask_logInjectedWeb3Usage',
params: [{ action: 'window.web3 get', name }], params: [{ action: 'get', name }],
}) })
} }
@ -59,7 +59,7 @@ export default function setupWeb3 (log) {
if (shouldLogUsage) { if (shouldLogUsage) {
window.ethereum.request({ window.ethereum.request({
method: 'metamask_logInjectedWeb3Usage', method: 'metamask_logInjectedWeb3Usage',
params: [{ action: 'window.web3 set', name }], params: [{ action: 'set', name }],
}) })
} }

View File

@ -123,7 +123,7 @@ export default class MetamaskController extends EventEmitter {
const { const {
currentLocale, currentLocale,
metaMetricsId, metaMetricsId,
} = this.preferencesController.getState() } = this.preferencesController.store.getState()
return { currentLocale, metaMetricsId } return { currentLocale, metaMetricsId }
}, },
) )
@ -1672,7 +1672,7 @@ export default class MetamaskController extends EventEmitter {
})) }))
engine.push(createMethodMiddleware({ engine.push(createMethodMiddleware({
origin, origin,
sendMetrics: this.sendBackgroundMetaMetrics.bind(this), sendMetrics: this.trackSegmentEvent,
})) }))
// filter and subscription polyfills // filter and subscription polyfills
engine.push(filterMiddleware) engine.push(filterMiddleware)