UNPKG

@kiwicom/smart-faq

Version:

Smart FAQ

36 lines (28 loc) 885 B
// @flow import * as React from 'react'; import type { LogEvent, EventPayload } from './cuckoo'; import { simpleTracker } from './trackers'; const TimeTracker = <TargetProps>( TargetComponent: React.ComponentType<TargetProps>, eventName: LogEvent, payloadBuilder?: (props: TargetProps) => EventPayload, ): React.ComponentType<TargetProps> => { class TimeTracked extends React.Component<TargetProps> { openedAt: number; componentDidMount() { this.openedAt = Date.now(); } componentWillUnmount() { const timeOpen = Math.round((Date.now() - this.openedAt) / 1000); const payload = payloadBuilder ? { ...payloadBuilder(this.props), timeOpen } : {}; simpleTracker(eventName, payload); } render() { return <TargetComponent {...this.props} />; } } return TimeTracked; }; export default TimeTracker;