From 97d206a9d4f84edded79198cf1ac4e9441fb5abe Mon Sep 17 00:00:00 2001 From: Tilen Komel Date: Thu, 30 Jan 2025 15:25:54 +0100 Subject: [PATCH] Add Uptime.tsx --- src/components/generic/Uptime.tsx | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/components/generic/Uptime.tsx diff --git a/src/components/generic/Uptime.tsx b/src/components/generic/Uptime.tsx new file mode 100644 index 00000000..59cceb4b --- /dev/null +++ b/src/components/generic/Uptime.tsx @@ -0,0 +1,23 @@ +import { type JSX, useEffect, useState } from "react"; + +export interface UptimeProps { + seconds: number; +} + +const getUptime = (seconds: number): string => { + const days = Math.floor(seconds / 86400); + const hours = Math.floor((seconds % 86400) / 3600); + const minutes = Math.floor(((seconds % 86400) % 3600) / 60); + const secondsLeft = Math.floor(((seconds % 86400) % 3600) % 60); + return `${days}d ${hours}h ${minutes}m ${secondsLeft}s`; +}; + +export const Uptime = ({ seconds }: UptimeProps): JSX.Element => { + const [uptime, setUptime] = useState(getUptime(seconds)); + + useEffect(() => { + setUptime(getUptime(seconds)); + }, [seconds]); + + return {uptime}; +};