@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
27 lines (26 loc) • 944 B
JavaScript
import { useState, useEffect } from "react";
import { formatTimeAgo } from "./formatUtils.js";
import { useTimeout } from "./useTimeout.js";
const fmt = (timestamp, locale, showSeconds) => {
const timestampMs = String(timestamp).length > 11 ? timestamp : timestamp * 1e3;
return formatTimeAgo(timestampMs, locale, showSeconds);
};
function useTimeAgo(timestamp = Date.now(), options) {
const { locale, disableRefresh = false, showSeconds = false } = options || {};
const [timeAgo, setTimeAgo] = useState(
() => fmt(timestamp, locale, showSeconds)
);
const refreshTime = disableRefresh ? 0 : 1e4;
useEffect(() => {
const newTimeAgo = fmt(timestamp, locale, showSeconds);
setTimeAgo(newTimeAgo);
}, [timestamp, locale, showSeconds]);
useTimeout(() => {
const newTimeAgo = fmt(timestamp, locale, showSeconds);
setTimeAgo(newTimeAgo);
}, refreshTime);
return timeAgo;
}
export {
useTimeAgo as default
};