From 01984c0b43b942e9a2eb1766806984d44a51bf17 Mon Sep 17 00:00:00 2001 From: ekzyis <27162016+ekzyis@users.noreply.github.com> Date: Fri, 22 Dec 2023 00:31:16 +0100 Subject: [PATCH] Add wallet limit banner (#699) * Colorize balance if over soft limit * Remove default banner export --------- Co-authored-by: ekzyis --- components/banners.js | 21 ++++++++++++++++++++- components/header.js | 8 +++++--- pages/wallet.js | 10 +++++++--- pages/~/index.js | 2 +- styles/globals.scss | 8 ++++---- 5 files changed, 37 insertions(+), 12 deletions(-) diff --git a/components/banners.js b/components/banners.js index 3527d4748..7bf34119b 100644 --- a/components/banners.js +++ b/components/banners.js @@ -5,8 +5,10 @@ import { useMe } from '../components/me' import { useMutation } from '@apollo/client' import { WELCOME_BANNER_MUTATION } from '../fragments/users' import { useToast } from '../components/toast' +import { BALANCE_LIMIT_MSATS } from '../lib/constants' +import { msatsToSats, numWithUnits } from '../lib/format' -export default function WelcomeBanner () { +export function WelcomeBanner () { const me = useMe() const toaster = useToast() const [hidden, setHidden] = useState(true) @@ -65,3 +67,20 @@ export default function WelcomeBanner () { ) } + +export function WalletLimitBanner () { + const me = useMe() + + const limitReached = me?.privates?.sats >= msatsToSats(BALANCE_LIMIT_MSATS) + if (!me || !limitReached) return + + return ( + +

+ Your wallet is over the current limit ({numWithUnits(msatsToSats(BALANCE_LIMIT_MSATS))}).
+ You will not be able to deposit any more funds or receive sats from outside of SN.
+ Please withdraw sats to restore full wallet functionality. +

+
+ ) +} diff --git a/components/header.js b/components/header.js index c7bcdae1a..079ee0998 100644 --- a/components/header.js +++ b/components/header.js @@ -12,13 +12,13 @@ import Head from 'next/head' import { signOut } from 'next-auth/react' import { useCallback, useEffect } from 'react' import { randInRange } from '../lib/rand' -import { abbrNum } from '../lib/format' +import { abbrNum, msatsToSats } from '../lib/format' import NoteIcon from '../svgs/notification-4-fill.svg' import { useQuery } from '@apollo/client' import LightningIcon from '../svgs/bolt.svg' import SearchIcon from '../svgs/search-line.svg' import BackArrow from '../svgs/arrow-left-line.svg' -import { SSR } from '../lib/constants' +import { BALANCE_LIMIT_MSATS, SSR } from '../lib/constants' import { useLightning } from './lightning' import { HAS_NOTIFICATIONS } from '../fragments/notifications' import AnonIcon from '../svgs/spy-fill.svg' @@ -153,13 +153,15 @@ function NavProfileMenu ({ me, dropNavKey }) { function StackerCorner ({ dropNavKey }) { const me = useMe() + const walletLimitReached = me.privates?.sats >= msatsToSats(BALANCE_LIMIT_MSATS) + return (
- + diff --git a/pages/wallet.js b/pages/wallet.js index cac51fb04..10354dca4 100644 --- a/pages/wallet.js +++ b/pages/wallet.js @@ -15,8 +15,8 @@ import { CREATE_WITHDRAWL, SEND_TO_LNADDR } from '../fragments/wallet' import { getGetServerSideProps } from '../api/ssrApollo' import { amountSchema, lnAddrSchema, withdrawlSchema } from '../lib/validate' import Nav from 'react-bootstrap/Nav' -import { SSR } from '../lib/constants' -import { numWithUnits } from '../lib/format' +import { BALANCE_LIMIT_MSATS, SSR } from '../lib/constants' +import { msatsToSats, numWithUnits } from '../lib/format' import styles from '../components/user-header.module.css' import HiddenWalletSummary from '../components/hidden-wallet-summary' import AccordianItem from '../components/accordian-item' @@ -27,6 +27,7 @@ import CameraIcon from '../svgs/camera-line.svg' import { useShowModal } from '../components/modal' import { useField } from 'formik' import { useToast } from '../components/toast' +import { WalletLimitBanner } from '../components/banners' export const getServerSideProps = getGetServerSideProps({ authRequired: true }) @@ -49,6 +50,7 @@ export default function Wallet () { return ( + @@ -58,8 +60,9 @@ export default function Wallet () { function YouHaveSats () { const me = useMe() + const limitReached = me?.privates?.sats >= msatsToSats(BALANCE_LIMIT_MSATS) return ( -

+

you have{' '} {me && ( me.privates?.hideWalletBalance @@ -115,6 +118,7 @@ export function FundForm () { return ( <> +
{me && showAlert &&