useNotifyReceivedPayments.ts raw
1 import React from "react";
2 import { toast } from "sonner";
3 import { useInfo } from "src/hooks/useInfo";
4 import { useTransactions } from "src/hooks/useTransactions";
5 import { Transaction } from "src/types";
6 import { formatBitcoinAmount } from "src/utils/bitcoinFormatting";
7
8 export function useNotifyReceivedPayments() {
9 const { data: info } = useInfo();
10 const { data: transactionsData } = useTransactions(undefined, true, 1);
11 const [prevTransaction, setPrevTransaction] = React.useState<Transaction>();
12
13 React.useEffect(() => {
14 if (!transactionsData?.transactions?.length || !info) {
15 return;
16 }
17 const latestTx = transactionsData.transactions[0];
18 if (latestTx !== prevTransaction) {
19 if (prevTransaction && latestTx.type === "incoming") {
20 toast("Payment received", {
21 description: formatBitcoinAmount(
22 latestTx.amountMsat,
23 info.bitcoinDisplayFormat
24 ),
25 });
26 }
27 setPrevTransaction(latestTx);
28 }
29 }, [prevTransaction, transactionsData, info]);
30 }
31