Files
discord-decomp/modules/user_profile/hooks/useActivityTimer.tsx
T
2026-11-01 12:12:55 +02:00

39 lines
1.6 KiB
TypeScript

// Metro module 12016 (f12017).
import { useEffect, useState } from "react";
import Durations from "../../../utils/Durations";
import { formatTimestampToA11yLabel } from "../../content_inventory/utils";
import { Interval } from "../../../_bundle/Timeout";
export default function useActivityTimer({ start, end }) {
let setState;
setState = void 0;
const [state] = useState(new Interval());
let state2;
[state2, setState] = useState(() => Date.now());
useEffect(() => {
state.start(Durations.Millis.HALF_SECOND, () => setState(Date.now()));
return () => state.stop();
}, [state]);
const duration = (end - start) / Durations.Millis.SECOND;
const elapsed = Math.max(Math.min((state2 - start) / Durations.Millis.SECOND, duration), 0);
return {
elapsed,
duration,
percentage: Math.max(Math.min(elapsed / duration, 1), 0)
};
};
export function formatTime(a0) {
const r23 = Math.floor(a0) % Durations.Seconds.MINUTE;
const r34 = Math.floor(a0 / Durations.Seconds.MINUTE) % Durations.Seconds.MINUTE;
const r42 = Math.floor(a0 / Durations.Seconds.HOUR);
return r42 === 0 ? `${String(r34).padStart(2, "0")}:${String(r23).padStart(2, "0")}` : `${String(r42).padStart(2, "0")}:${String(r34).padStart(2, "0")}:${String(r23).padStart(2, "0")}`;
}
export function formatTimeForA11yLabel(a0) {
const seconds = Math.floor(a0) % Durations.Seconds.MINUTE;
const minutes = Math.floor(a0 / Durations.Seconds.MINUTE) % Durations.Seconds.MINUTE;
return formatTimestampToA11yLabel({
hours: Math.floor(a0 / Durations.Seconds.HOUR),
minutes,
seconds
});
}