diff --git a/components/brain/left-sidebar/waves/BrainLeftSidebarWaveDropTime.tsx b/components/brain/left-sidebar/waves/BrainLeftSidebarWaveDropTime.tsx index 8e2d490acf..ceb9df3d8b 100644 --- a/components/brain/left-sidebar/waves/BrainLeftSidebarWaveDropTime.tsx +++ b/components/brain/left-sidebar/waves/BrainLeftSidebarWaveDropTime.tsx @@ -1,6 +1,6 @@ "use client"; -import React, { useState, useEffect } from "react"; +import React, { useEffect, useState } from "react"; import { getTimeAgoShort } from "@/helpers/Helpers"; interface BrainLeftSidebarWaveDropTimeProps { @@ -10,19 +10,28 @@ interface BrainLeftSidebarWaveDropTimeProps { const BrainLeftSidebarWaveDropTime: React.FC< BrainLeftSidebarWaveDropTimeProps > = ({ time }) => { - const [_, setTick] = useState(0); + const [now, setNow] = useState(() => Date.now()); useEffect(() => { - const intervalId = setInterval(() => { - setTick((prev) => prev + 1); - }, 60000); // Update every minute (60000ms) + const intervalId = window.setInterval(() => { + setNow(Date.now()); + }, 60000); return () => { - clearInterval(intervalId); + window.clearInterval(intervalId); }; }, []); - return {getTimeAgoShort(time)}; + useEffect(() => { + setNow((previousNow) => { + const currentNow = Date.now(); + return previousNow === currentNow ? previousNow : currentNow; + }); + }, [time]); + + const label = getTimeAgoShort(time, now); + + return {label}; }; export default BrainLeftSidebarWaveDropTime; diff --git a/helpers/Helpers.ts b/helpers/Helpers.ts index 3d3912744b..11ec92ca15 100644 --- a/helpers/Helpers.ts +++ b/helpers/Helpers.ts @@ -560,9 +560,11 @@ export const getTimeAgo = (milliseconds: number): string => { } }; -export const getTimeAgoShort = (milliseconds: number): string => { - const currentTime = new Date().getTime(); - const timeDifference = currentTime - milliseconds; +export const getTimeAgoShort = ( + milliseconds: number, + referenceTime: number = Date.now() +): string => { + const timeDifference = referenceTime - milliseconds; const seconds = Math.floor(timeDifference / 1000); const minutes = Math.floor(seconds / 60);