Use a hook for the ever-updating now

This commit is contained in:
Josh Perez 2022-03-08 14:11:11 -05:00 committed by GitHub
parent f8724e91da
commit 4e48d7792b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 34 additions and 78 deletions

View file

@ -0,0 +1,27 @@
// 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();
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;
}