// @flow import * as React from 'react'; import Tooltip from 'components/Tooltip'; import distanceInWordsToNow from 'date-fns/distance_in_words_to_now'; import format from 'date-fns/format'; let callbacks = []; // This is a shared timer that fires every minute, used for // updating all Time components across the page all at once. setInterval(() => { callbacks.forEach(cb => cb()); }, 1000 * 60); function eachMinute(fn) { callbacks.push(fn); return () => { callbacks = callbacks.filter(cb => cb !== fn); }; } type Props = { dateTime: string, children?: React.Node, }; class Time extends React.Component { removeEachMinuteCallback: () => void; componentDidMount() { this.removeEachMinuteCallback = eachMinute(() => { this.forceUpdate(); }); } componentWillUnmount() { this.removeEachMinuteCallback(); } render() { return ( ); } } export default Time;