Add per-account transaction filtering and QR codes for Monero

This commit is contained in:
2026-05-24 19:58:52 +08:00
parent 932501c32c
commit b1d14e1d8b
6 changed files with 101 additions and 62 deletions
+21
View File
@@ -0,0 +1,21 @@
<script lang="ts">
import { electrobun } from '$lib/electrobun.js'
let { text, size = 128 }: { text: string; size?: number } = $props()
let svgContent = $state('')
$effect(() => {
if (!text || !electrobun.rpc) return
svgContent = ''
electrobun.rpc.request
.generateQrCode({ text, size })
.then((svg) => {
svgContent = svg
})
})
</script>
{#if svgContent}
{@html svgContent}
{/if}
+2 -1
View File
@@ -123,6 +123,7 @@ export type RPC = {
fetchTokenBalances: { params: { address: string; chainid: string }; response: TokenBalanceResult[] }
fetchTransactionDetails: { params: { hash: string; chainid: string; address?: string }; response: TransactionDetails | null }
openExternal: { params: { url: string }; response: void }
generateQrCode: { params: { text: string; size?: number }; response: string }
moneroBinaryStatus: { params: {}; response: MoneroBinaryStatus }
moneroDownloadBinary: { params: {}; response: void }
moneroStart: { params: { daemonAddress?: string }; response: MoneroWalletStatus }
@@ -131,7 +132,7 @@ export type RPC = {
moneroRestoreWallet: { params: { name: string; password: string; mnemonic: string; restoreHeight?: number }; response: { address: string } }
moneroOpenWallet: { params: { name: string; password: string }; response: void }
moneroGetBalance: { params: {}; response: MoneroBalance }
moneroGetTransactions: { params: {}; response: MoneroTxEntry[] }
moneroGetTransactions: { params: { accountIndex?: number }; response: MoneroTxEntry[] }
moneroWalletStatus: { params: {}; response: MoneroWalletStatus }
moneroGetAccounts: { params: {}; response: MoneroAccountEntry[] }
moneroListWallets: { params: {}; response: string[] }
@@ -39,6 +39,7 @@ export const MoneroWallet = () => {
let wallets = $state<string[]>([])
let loading = $state(false)
let error = $state('')
let selectedAccountIndex = $state(0)
const checkBiometric = async () => {
if (!electrobun.rpc) return
@@ -218,7 +219,9 @@ export const MoneroWallet = () => {
daemonHeight = bal.daemonHeight
}
const [result] = await tryCatch(
electrobun.rpc.request.moneroGetTransactions({}),
electrobun.rpc.request.moneroGetTransactions({
accountIndex: selectedAccountIndex,
}),
)
txs = result ?? []
await fetchAccounts()
@@ -273,6 +276,8 @@ export const MoneroWallet = () => {
set downloading(v: boolean) { downloading = v },
set running(v: boolean) { running = v },
set connected(v: boolean) { connected = v },
get selectedAccountIndex() { return selectedAccountIndex },
set selectedAccountIndex(v: number) { selectedAccountIndex = v },
init,
login,
logout,