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
+
+ )}