add sweepAll for Monero send-all; add copy buttons for accounts/subaddresses

This commit is contained in:
2026-05-26 13:09:18 +08:00
parent 915f6f36f6
commit 34602a4bfa
7 changed files with 113 additions and 10 deletions
+1
View File
@@ -16,6 +16,7 @@ export {
getFeeEstimate,
getDaemonHeight,
transfer,
sweepAll,
isWalletOpen,
isConnected,
listWallets,
+27
View File
@@ -423,6 +423,33 @@ export async function getDaemonHeight(
}
}
export async function sweepAll(
state: MoneroWalletState,
address: string,
priority: number = 0,
accountIndex: number = 0,
): Promise<{ txHash: string; fee: string; amount: string }> {
if (!state.wallet) throw new Error('Wallet RPC not started')
console.log(
`[monero] sweepAll: ${address} priority=${priority} account=${accountIndex}`,
)
const result = await rawRpc(state, 'sweep_all', {
address,
priority,
account_index: accountIndex,
get_tx_keys: true,
get_tx_hex: false,
get_tx_metadata: false,
})
const txHash = result.tx_hash_list?.[0] ?? ''
const fee = result.fee_list?.[0]?.toString() ?? '0'
const amount = result.amount_list?.[0]?.toString() ?? '0'
console.log(
`[monero] sweepAll result: tx_hash=${txHash} fee=${fee} amount=${amount}`,
)
return { txHash, fee, amount }
}
export async function transfer(
state: MoneroWalletState,
address: string,
+25
View File
@@ -17,6 +17,7 @@ import {
getDaemonHeight as walletGetDaemonHeight,
getFeeEstimate as walletGetFeeEstimate,
transfer as walletTransfer,
sweepAll as walletSweepAll,
isWalletOpen,
isConnected,
} from '../../lib/monero'
@@ -231,6 +232,30 @@ export function createMoneroHandlers(state: {
console.log('[rpc] moneroTransfer complete:', result.txHash)
return result
},
moneroSweepAll: async ({
address,
priority,
accountIndex,
}: {
address: string
priority?: number
accountIndex?: number
}) => {
console.log('[rpc] moneroSweepAll:', {
address,
priority,
})
if (!state.manager)
throw new Error('Monero wallet RPC not started')
const result = await walletSweepAll(
state.manager,
address,
priority ?? 0,
accountIndex ?? 0,
)
console.log('[rpc] moneroSweepAll complete:', result.txHash)
return result
},
moneroGetTransferDetails: async ({ txid }: { txid: string }) => {
console.log('[rpc] moneroGetTransferDetails:', txid)
if (!state.manager)