import { useEffect, useState } from "react"; import { useGleanClick } from "../../telemetry/glean-context"; import { OBSERVATORY } from "../../telemetry/constants"; import { Button } from "../../ui/atoms/button"; export function RescanButton({ from, duration, onClickHandler, }: { from: Date; duration: number; onClickHandler: () => void; }) { function calculateRemainingTime() { const endTime = from.getTime() + duration * 1000; return Math.max(0, endTime - new Date().getTime()); } const [remainingTime, setRemainingTime] = useState(() => calculateRemainingTime() ); useEffect(() => { const interval = setInterval(() => { setRemainingTime(calculateRemainingTime()); }, 1000); return () => clearInterval(interval); }); const gleanClick = useGleanClick(); function rescan() { gleanClick(`${OBSERVATORY}: rescan`); onClickHandler(); } const isExpired = remainingTime <= 0; const remainingSecs = Math.floor(remainingTime / 1000) + 1; const progressPercent = (remainingSecs * 100) / 60; return !isExpired ? ( ) : ( ); }