import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import autobind from 'autobind-decorator'; import classnames from 'classnames'; import { REQUEST_TIME_TO_SHOW_COUNTER } from '../../common/constants'; @autobind class ResponseTimer extends PureComponent { constructor(props) { super(props); this._interval = null; this.state = { elapsedTime: 0, }; } componentWillUnmount() { clearInterval(this._interval); } _handleUpdateElapsedTime() { const { loadStartTime } = this.props; const millis = Date.now() - loadStartTime - 200; const elapsedTime = millis / 1000; this.setState({ elapsedTime }); } componentWillReceiveProps(nextProps) { const { loadStartTime } = nextProps; if (loadStartTime <= 0) { clearInterval(this._interval); return; } clearInterval(this._interval); // Just to be sure this._interval = setInterval(this._handleUpdateElapsedTime, 100); this._handleUpdateElapsedTime(); } render() { const { handleCancel, loadStartTime } = this.props; const { elapsedTime } = this.state; const show = loadStartTime > 0; return (