From ec9a424bf448b7474325e1ad93ff162531a976e9 Mon Sep 17 00:00:00 2001 From: keyan Date: Thu, 6 Jul 2023 12:43:51 -0500 Subject: [PATCH] reward countdown in footer --- components/countdown.js | 2 +- components/footer-rewards.js | 23 +++++++++++++++++++++++ components/footer.js | 7 ++----- pages/rewards.js | 30 ++++++++++++++++++++++++++++-- 4 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 components/footer-rewards.js diff --git a/components/countdown.js b/components/countdown.js index a02b0811..cc7ef4da 100644 --- a/components/countdown.js +++ b/components/countdown.js @@ -5,7 +5,7 @@ export default function SimpleCountdown ({ className, onComplete, date }) { {props.formatted.minutes}:{props.formatted.seconds}} + renderer={props => {props.formatted.minutes}:{props.formatted.seconds}} onComplete={onComplete} /> diff --git a/components/footer-rewards.js b/components/footer-rewards.js new file mode 100644 index 00000000..b12fdc12 --- /dev/null +++ b/components/footer-rewards.js @@ -0,0 +1,23 @@ +import { gql, useQuery } from '@apollo/client' +import Link from 'next/link' +import { RewardLine } from '../pages/rewards' + +const REWARDS = gql` +{ + expectedRewards { + total + } +}` + +export default function Rewards () { + const { data } = useQuery(REWARDS, { pollInterval: 60000, fetchPolicy: 'cache-and-network' }) + const total = data?.expectedRewards?.total + + return ( + + + {total ? : 'rewards'} + + + ) +} diff --git a/components/footer.js b/components/footer.js index e0fc12c2..5d98dfe3 100644 --- a/components/footer.js +++ b/components/footer.js @@ -13,6 +13,7 @@ import No from '../svgs/no.svg' import Bolt from '../svgs/bolt.svg' import Amboss from '../svgs/amboss.svg' import { useEffect, useState } from 'react' +import Rewards from './footer-rewards' // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX // if you update this you need to update /public/darkmode @@ -234,11 +235,7 @@ export default function Footer ({ noLinks }) { }
- - - rewards - - +
diff --git a/pages/rewards.js b/pages/rewards.js index 47a8006e..cd621901 100644 --- a/pages/rewards.js +++ b/pages/rewards.js @@ -8,6 +8,8 @@ import LayoutCenter from '../components/layout-center' import { useMutation, useQuery } from '@apollo/client' import Link from 'next/link' import { amountSchema } from '../lib/validate' +import Countdown from 'react-countdown' +import { abbrNum } from '../lib/format' const REWARDS = gql` { @@ -23,8 +25,30 @@ const REWARDS = gql` export const getServerSideProps = getGetServerSideProps(REWARDS) +export function RewardLine ({ total }) { + const [threshold, setThreshold] = useState(0) + + useEffect(() => { + const dateStr = new Date().toLocaleString('en-US', { timeZone: 'America/Chicago' }) + const date = new Date(dateStr) + date.setHours(24, 0, 0, 0) + setThreshold(date.getTime()) + }, []) + + return ( + <> + {abbrNum(total)} sats in rewards + {threshold && + {props.formatted.hours}:{props.formatted.minutes}:{props.formatted.seconds}} + />} + + ) +} + export default function Rewards ({ data: { expectedRewards: { total, sources } } }) { - const { data } = useQuery(REWARDS, { pollInterval: 1000 }) + const { data } = useQuery(REWARDS, { pollInterval: 1000, fetchPolicy: 'cache-and-network' }) if (data) { ({ expectedRewards: { total, sources } } = data) @@ -33,7 +57,9 @@ export default function Rewards ({ data: { expectedRewards: { total, sources } } return (

-
{total} sats to be rewarded today
+
+ +
learn about rewards