import React, { useState } from 'react'; import classNames from 'classnames'; import { getIncrement, getTimerBucket } from '../../util/timer'; import { useInterval } from '../../hooks/useInterval'; type Props = { withImageNoCaption: boolean; expirationLength: number; expirationTimestamp: number; direction: 'incoming' | 'outgoing'; }; export const ExpireTimer = (props: Props) => { const { direction, expirationLength, expirationTimestamp, withImageNoCaption, } = props; const initialTimeLeft = Math.max( Math.round((expirationTimestamp - Date.now()) / 1000), 0 ); const [timeLeft, setTimeLeft] = useState(initialTimeLeft); const update = () => { const newTimeLeft = Math.max( Math.round((expirationTimestamp - Date.now()) / 1000), 0 ); if (newTimeLeft !== timeLeft) { setTimeLeft(newTimeLeft); } }; const increment = getIncrement(expirationLength); const updateFrequency = Math.max(increment, 500); useInterval(update, updateFrequency); if (timeLeft <= 60) { return ( {timeLeft} ); } const bucket = getTimerBucket(expirationTimestamp, expirationLength); return (
); };