From 3ceebdc8fa82853bfba449530d3f0cac6ed15c4c Mon Sep 17 00:00:00 2001 From: Olaleye Blessing Date: Mon, 4 Aug 2025 07:54:14 +0100 Subject: [PATCH] Improve countdown display with hours & minutes --- .../components/DistributionCountdown.tsx | 27 +++++++++++++++++++ .../components/DistributionOverview.tsx | 4 +-- src/app/governance/components/VotingPower.tsx | 8 +++--- 3 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 src/app/governance/components/DistributionCountdown.tsx diff --git a/src/app/governance/components/DistributionCountdown.tsx b/src/app/governance/components/DistributionCountdown.tsx new file mode 100644 index 00000000..d1cb3fe0 --- /dev/null +++ b/src/app/governance/components/DistributionCountdown.tsx @@ -0,0 +1,27 @@ +import { + differenceInDays, + differenceInHours, + differenceInMinutes, +} from "date-fns"; + +export const DistributionCountdown = ({ end }: { end: Date }) => { + const getTimeDisplay = () => { + const now = new Date(); + const days = differenceInDays(end, now); + + if (days >= 1) return `${days} ${days === 1 ? "day" : "days"}`; + + const hours = differenceInHours(end, now); + + if (hours >= 1) return `${hours} ${hours === 1 ? "hour" : "hours"}`; + + const minutes = differenceInMinutes(end, now); + + if (minutes >= 1) + return `${minutes} ${minutes === 1 ? "minute" : "minutes"}`; + + return "0 days"; + }; + + return <>{getTimeDisplay()}; +}; diff --git a/src/app/governance/components/DistributionOverview.tsx b/src/app/governance/components/DistributionOverview.tsx index ff331e0e..7eadfbe4 100644 --- a/src/app/governance/components/DistributionOverview.tsx +++ b/src/app/governance/components/DistributionOverview.tsx @@ -15,6 +15,7 @@ import { getChain } from "@/chainConfig"; import { formatUnits } from "viem"; import clsx from "clsx"; import { useDistributions } from '../useDistributions'; +import { DistributionCountdown } from "./DistributionCountdown"; export function DistributionOverview({ cycleDates, @@ -192,8 +193,7 @@ export function DistributionOverview({ ) : (

- Distributing in{" "} - {differenceInDays(cycleDates.end, new Date())} days + Distributing in

{completedDays && diff --git a/src/app/governance/components/VotingPower.tsx b/src/app/governance/components/VotingPower.tsx index 7b7cd0c3..8640c816 100644 --- a/src/app/governance/components/VotingPower.tsx +++ b/src/app/governance/components/VotingPower.tsx @@ -7,7 +7,7 @@ import { CycleDatesSuccess } from "../useCycleDates"; import { CycleLengthSuccess } from "../useCycleLength"; import { FistIcon } from "@/app/core/components/Icons/FistIcon"; import { formatUnits } from "viem"; -import { differenceInDays } from "date-fns"; +import { DistributionCountdown } from "./DistributionCountdown"; export function VotingPower({ minRequiredVotingPower, @@ -89,8 +89,6 @@ function NotEnoughPower() { } function UserHasVoted({ cycleDates }: { cycleDates: CycleDatesSuccess }) { - const days = differenceInDays(cycleDates.end, Date.now()); - return (
@@ -103,7 +101,9 @@ function UserHasVoted({ cycleDates }: { cycleDates: CycleDatesSuccess }) {
Next round: - In {days} {days === 1 ? "day" : "days"} + + +
);