From 38cdc52df460367eab00fd04d67521227c8006ca Mon Sep 17 00:00:00 2001 From: alter-eggo Date: Tue, 9 Apr 2024 15:04:31 +0400 Subject: [PATCH] feat: support multiple recipients in rpc send transfer method, closes #5174 --- .../components/send-transfer-details.tsx | 44 +++++++----- .../rpc-send-transfer/rpc-send-transfer.tsx | 13 ++-- .../use-rpc-send-transfer.ts | 17 +++-- .../messaging/rpc-methods/send-transfer.ts | 38 +++++++--- src/shared/rpc/methods/send-transfer.spec.ts | 70 +++++++++++++++++++ src/shared/rpc/methods/send-transfer.ts | 40 ++++++++++- test-app/src/components/bitcoin.tsx | 27 +++++++ 7 files changed, 207 insertions(+), 42 deletions(-) create mode 100644 src/shared/rpc/methods/send-transfer.spec.ts diff --git a/src/app/pages/rpc-send-transfer/components/send-transfer-details.tsx b/src/app/pages/rpc-send-transfer/components/send-transfer-details.tsx index a50d7a13cc9..f77a7c17a16 100644 --- a/src/app/pages/rpc-send-transfer/components/send-transfer-details.tsx +++ b/src/app/pages/rpc-send-transfer/components/send-transfer-details.tsx @@ -1,27 +1,39 @@ import { HStack, Stack, styled } from 'leather-styles/jsx'; +import type { RpcSendTransferRecipient } from '@shared/rpc/methods/send-transfer'; + import { truncateMiddle } from '@app/ui/utils/truncate-middle'; interface SendTransferDetailsProps { - address: string; - amount: string; + recipients: RpcSendTransferRecipient[]; currentAddress: string; } -export function SendTransferDetails({ address, amount, currentAddress }: SendTransferDetailsProps) { +export function SendTransferDetails({ recipients, currentAddress }: SendTransferDetailsProps) { return ( - - - From - {truncateMiddle(currentAddress)} - - - To - {truncateMiddle(address)} - - - Amount - {amount} - + + {recipients.map(({ address, amount }, index) => ( + + + From + {truncateMiddle(currentAddress)} + + + To + {truncateMiddle(address)} + + + Amount + {amount} + + + ))} ); } diff --git a/src/app/pages/rpc-send-transfer/rpc-send-transfer.tsx b/src/app/pages/rpc-send-transfer/rpc-send-transfer.tsx index 22200e46073..44801011385 100644 --- a/src/app/pages/rpc-send-transfer/rpc-send-transfer.tsx +++ b/src/app/pages/rpc-send-transfer/rpc-send-transfer.tsx @@ -14,20 +14,17 @@ import { useRpcSendTransfer } from './use-rpc-send-transfer'; export function RpcSendTransfer() { const nativeSegwitSigner = useCurrentAccountNativeSegwitIndexZeroSigner(); - const { address, amount, onChooseTransferFee, origin } = useRpcSendTransfer(); - const amountAsMoney = createMoney(new BigNumber(amount), 'BTC'); + const { recipients, recipientAddresses, totalAmount, onChooseTransferFee, origin } = + useRpcSendTransfer(); + const amountAsMoney = createMoney(new BigNumber(totalAmount), 'BTC'); const formattedMoney = formatMoneyPadded(amountAsMoney); - useBreakOnNonCompliantEntity(address); + useBreakOnNonCompliantEntity(recipientAddresses); return ( <> - +