From 4b12dd05003857918c14e3b407acc877a7eb75d4 Mon Sep 17 00:00:00 2001 From: Akim Mamedov Date: Thu, 14 Mar 2024 09:46:50 +0700 Subject: [PATCH] Fix frontend --- .../TimeUntilReduce/TimeUntilReduce.js | 2 +- web/src/hooks/useCountdown.js | 32 +++++++++---------- .../pages/begin-page/begin-page.module.css | 10 +++--- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/web/src/components/TimeUntilReduce/TimeUntilReduce.js b/web/src/components/TimeUntilReduce/TimeUntilReduce.js index 98c5b09..5bb9bd6 100644 --- a/web/src/components/TimeUntilReduce/TimeUntilReduce.js +++ b/web/src/components/TimeUntilReduce/TimeUntilReduce.js @@ -4,7 +4,7 @@ import DefinitionList from "../DefinitionList/DefinitionList"; const TimeUntilReduce = () => { const { nextHalvePeriod } = useSelector((state) => state.distributor); - const [timer] = useCountdown(nextHalvePeriod || 0); + const timer = useCountdown(nextHalvePeriod || 0); return ( { - const format = ({ months, days, hours, minutes, seconds }) => - `${months}M ${days}d ${hours}h ${minutes}m ${seconds}s`; +const format = ({ months = 0, days = 0, hours = 0, minutes = 0, seconds = 0 }) => + `${months}M ${days}d ${hours}h ${minutes}m ${seconds}s`; - const [ended, setEnded] = useState(isPast(date)); +export const useCountdown = (date) => { const [duration, setDuration] = useState( - intervalToDuration({ - start: date, - end: Date.now(), + isPast(date) ? {} : intervalToDuration({ + start: Date.now(), + end: date, }), ); - const [formatted, setFormatted] = useState(format(duration)); useEffect(() => { const timer = setInterval(() => { + if (isPast(date)) { + clearInterval(timer); + return; + } + const intToDur = intervalToDuration({ - start: date, - end: Date.now(), + start: Date.now(), + end: date, }); setDuration(intToDur); - setFormatted(format(intToDur)); - setEnded(isPast(date)); }, 1000); - ended && clearInterval(timer); return () => clearInterval(timer); - }, []); + }, [date]); - return [formatted, duration]; + return useMemo(() => format(duration), [duration]); }; diff --git a/web/src/pages/begin-page/begin-page.module.css b/web/src/pages/begin-page/begin-page.module.css index 36efcc8..0f5d1d4 100644 --- a/web/src/pages/begin-page/begin-page.module.css +++ b/web/src/pages/begin-page/begin-page.module.css @@ -17,13 +17,13 @@ } .flex-container { - display: flex; - justify-content: space-between; + display: grid; + grid-template-columns: 2fr 1fr; + column-gap: 5%; } .flex-container__part-left { max-width: 715px; - width: 65%; } .dashboard { @@ -164,11 +164,11 @@ @media screen and (max-width: 803px) { .flex-container { - flex-direction: column-reverse; - justify-content: flex-start; + grid-template-columns: 1fr; } .flex-container__part-left { + order: 2; max-width: 715px; width: 100%; }