Add periodic auto-sync with backend push events, remove refresh button

This commit is contained in:
2026-05-22 12:53:18 +08:00
parent cb55a6fc6b
commit c87e166468
5 changed files with 93 additions and 14 deletions
@@ -111,6 +111,18 @@ export const EvmWallet = () => {
const init = async () => {
if (!electrobun.rpc) return
electrobun.rpc.addMessageListener(
'transfersUpdate',
(payload: { chainid: string; address: string; count: number }) => {
if (
payload.address === address &&
payload.chainid === net().chainid
) {
fetchTxHistory()
}
},
)
const [walletList] = await tryCatch(
electrobun.rpc.request.evmListWallets({}),
)
@@ -166,6 +178,7 @@ export const EvmWallet = () => {
transactions = []
error = ''
currentPasswordHash = null
electrobun.rpc?.request.setAutoSync(null)
}
const unlockWallet = async (walletId: string) => {
@@ -181,6 +194,7 @@ export const EvmWallet = () => {
if (!vaultSeed) return false
seed = vaultSeed
await refresh()
await setAutoSync()
return true
}
@@ -221,6 +235,7 @@ export const EvmWallet = () => {
if (!vaultSeed) return false
seed = vaultSeed
await refresh()
await setAutoSync()
return true
}
@@ -360,6 +375,14 @@ export const EvmWallet = () => {
})
}
const setAutoSync = async () => {
if (!address || !electrobun.rpc) return
electrobun.rpc.request.setAutoSync({
address,
chainid: net().chainid,
})
}
const flushTxCache = async () => {
await electrobun.rpc?.request.flushTxCache({})
await fetchTxHistory()
@@ -513,6 +536,7 @@ export const EvmWallet = () => {
deleteWallet,
clearSelection,
syncTxHistory,
setAutoSync,
flushTxCache,
}
}