1
0
mirror of https://github.com/oceanprotocol/commons.git synced 2023-03-15 18:03:00 +01:00
commons/client/src/withTracker.tsx
Jernej Pregelj 1725c3a8a0 tests
2019-04-08 12:07:09 +02:00

41 lines
1.1 KiB
TypeScript

import React, { Component } from 'react'
import ReactGA from 'react-ga'
interface TrackerProps {
location: any
}
ReactGA.initialize('UA-60614729-11', {testMode: process.env.NODE_ENV === 'test'})
export default function withTracker(WrappedComponent: any, options: any = {}) {
const trackPage = (page: any) => {
options.isWeb3 = (window.web3 !== undefined)
ReactGA.set({
page,
...options
})
ReactGA.pageview(page)
}
const HOC = class extends Component<TrackerProps, {}> {
componentDidMount() {
const page = this.props.location.pathname + this.props.location.search
trackPage(page)
}
componentWillReceiveProps(nextProps: any) {
const currentPage = this.props.location.pathname;
const nextPage = nextProps.location.pathname;
if (currentPage !== nextPage) {
trackPage(nextProps.location.pathname + nextProps.location.search);
}
}
render() {
return <WrappedComponent {...this.props} />
}
}
return HOC
}