Signal-Desktop/ts/hooks/useNowThatUpdatesEveryMinut...

29 lines
626 B
TypeScript

// Copyright 2022 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { EventEmitter } from 'events';
import { useEffect, useState } from 'react';
import { MINUTE } from '../util/durations';
const ev = new EventEmitter();
ev.setMaxListeners(Infinity);
setInterval(() => ev.emit('tick'), MINUTE);
export function useNowThatUpdatesEveryMinute(): number {
const [now, setNow] = useState(Date.now());
useEffect(() => {
const updateNow = () => setNow(Date.now());
updateNow();
ev.on('tick', updateNow);
return () => {
ev.off('tick', updateNow);
};
}, []);
return now;
}