From 6b7945c50bdef6c4632828c7312da6d182165dc2 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Fri, 3 Jan 2025 13:50:32 +0200 Subject: [PATCH] Synchronize clock to start of second --- web/src/ui/rightpanel/UserExtendedProfile.tsx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/web/src/ui/rightpanel/UserExtendedProfile.tsx b/web/src/ui/rightpanel/UserExtendedProfile.tsx index e0f351c..73d9223 100644 --- a/web/src/ui/rightpanel/UserExtendedProfile.tsx +++ b/web/src/ui/rightpanel/UserExtendedProfile.tsx @@ -29,10 +29,13 @@ const currentTimeAdjusted = (tz: string) => { function ClockElement({ tz }: { tz: string }) { const [time, setTime] = useState(currentTimeAdjusted(tz)) useEffect(() => { - const interval = setInterval(() => { - setTime(currentTimeAdjusted(tz)) - }, (1000 - Date.now() % 1000)) - return () => clearInterval(interval) + let interval: number | undefined + const updateTime = () => setTime(currentTimeAdjusted(tz)) + const timeout = setTimeout(() => { + interval = setInterval(updateTime, 1000) + updateTime() + }, (1001 - Date.now() % 1000)) + return () => interval ? clearInterval(interval) : clearTimeout(timeout) }, [tz]) return
{time}
}