auto-detect existing wallets, show selectable list on startup

This commit is contained in:
2026-05-17 10:51:22 +08:00
parent 23b7447b92
commit 880199f096
5 changed files with 83 additions and 8 deletions
+4
View File
@@ -196,6 +196,10 @@ type RPC = {
params: {}
response: MoneroAccountEntry[]
}
moneroListWallets: {
params: {}
response: string[]
}
}
messages: {}
}
@@ -79,6 +79,7 @@ export const Wallet = () => {
let moneroDownloading = $state(false)
let moneroWalletName = $state('')
let moneroAccounts = $state<MoneroAccountEntry[]>([])
let moneroWallets = $state<string[]>([])
const net = () => networks.find((n) => n.id === network)!
@@ -132,6 +133,7 @@ export const Wallet = () => {
await moneroStart()
await checkMoneroStatus()
}
await moneroListWallets()
} else if (seed) {
await refresh()
}
@@ -215,6 +217,22 @@ export const Wallet = () => {
return true
}
const moneroListWallets = async () => {
if (!electrobun.rpc) return
const [wallets] = await tryCatch(
electrobun.rpc.request.moneroListWallets({}),
)
moneroWallets = wallets ?? []
}
const moneroOpenExistingWallet = async (name: string, password: string) => {
if (!electrobun.rpc) throw new Error('RPC not available')
await electrobun.rpc.request.moneroOpenWallet({ name, password })
moneroWalletName = name
moneroWalletOpen = true
await moneroRefresh()
}
const saveApiKey = async (key: string) => {
await electrobun.rpc?.request.setSecret({
service: 'koins',
@@ -285,6 +303,7 @@ export const Wallet = () => {
moneroUnlockedAtomic = '0'
moneroTxs = []
moneroAccounts = []
moneroWallets = []
}
const moneroCreateWallet = async (name: string, password: string) => {
@@ -379,6 +398,7 @@ export const Wallet = () => {
get moneroDownloading() { return moneroDownloading },
get moneroWalletName() { return moneroWalletName },
get moneroAccounts() { return moneroAccounts },
get moneroWallets() { return moneroWallets },
refresh,
init,
lock,
@@ -395,5 +415,7 @@ export const Wallet = () => {
moneroOpenWallet,
moneroRefresh,
moneroFetchAccounts,
moneroListWallets,
moneroOpenExistingWallet,
}
}