diff --git a/frontend/src/components/SendTip.jsx b/frontend/src/components/SendTip.jsx index c98bb5b5..6ad19c7f 100644 --- a/frontend/src/components/SendTip.jsx +++ b/frontend/src/components/SendTip.jsx @@ -18,9 +18,9 @@ import { analytics } from '../lib/analytics'; import ConfirmDialog from './ui/confirm-dialog'; import TxStatus from './ui/tx-status'; -const MIN_TIP_STX = 0.001; -const MAX_TIP_STX = 10000; -const COOLDOWN_SECONDS = 10; +const MIN_TIP_STX = 0.001; // minimum tip in STX +const MAX_TIP_STX = 10000; // maximum tip in STX +const COOLDOWN_SECONDS = 10; // seconds between allowed tips const TIP_CATEGORIES = [ { id: 0, label: 'General' }, @@ -182,7 +182,6 @@ export default function SendTip({ addToast }) { setMessage(''); setCategory(0); notifyTipSent(); - refetchBalance(); startCooldown(); analytics.trackTipConfirmed(); addToast('Tip sent! Tx: ' + data.txId, 'success'); @@ -208,13 +207,17 @@ export default function SendTip({ addToast }) { } }; + /** Called by TxStatus when the transaction reaches 'success' status. */ const handleTxConfirmed = useCallback(() => { + refetchBalance(); addToast('Tip confirmed on-chain!', 'success'); - }, [addToast]); + }, [addToast, refetchBalance]); + /** Called by TxStatus when the transaction is aborted on-chain. */ const handleTxFailed = useCallback((reason) => { + refetchBalance(); addToast(`Transaction failed: ${reason}`, 'error'); - }, [addToast]); + }, [addToast, refetchBalance]); return (
@@ -223,7 +226,7 @@ export default function SendTip({ addToast }) { {/* Balance */} {senderAddress && ( -
+

Your Balance

@@ -231,6 +234,11 @@ export default function SendTip({ addToast }) { ? formatBalance(balance) : 'Unavailable'}

+ {pendingTx && ( +

+ Pending confirmation +

+ )}