split balance and tx loading into independent processes
This commit is contained in:
@@ -332,6 +332,11 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
|
{#if w.loadingBalance && w.address}
|
||||||
|
<div class="flex justify-center py-4">
|
||||||
|
<Loader />
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
{#if w.error}
|
{#if w.error}
|
||||||
<p class="mb-3 text-red-500">{w.error}</p>
|
<p class="mb-3 text-red-500">{w.error}</p>
|
||||||
{/if}
|
{/if}
|
||||||
@@ -371,7 +376,7 @@
|
|||||||
<CardTitle>Transactions</CardTitle>
|
<CardTitle>Transactions</CardTitle>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent>
|
<CardContent>
|
||||||
{#if w.loading}
|
{#if w.loadingTransactions}
|
||||||
<div class="flex justify-center py-4">
|
<div class="flex justify-center py-4">
|
||||||
<Loader />
|
<Loader />
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -53,7 +53,8 @@ export const EvmWallet = () => {
|
|||||||
let network = $state<NetworkId>('eth')
|
let network = $state<NetworkId>('eth')
|
||||||
let apiKey = $state('')
|
let apiKey = $state('')
|
||||||
let transactions = $state<TxEntry[]>([])
|
let transactions = $state<TxEntry[]>([])
|
||||||
let loading = $state(false)
|
let loadingBalance = $state(false)
|
||||||
|
let loadingTransactions = $state(false)
|
||||||
let error = $state('')
|
let error = $state('')
|
||||||
let wallets = $state<EvmWalletInfo[]>([])
|
let wallets = $state<EvmWalletInfo[]>([])
|
||||||
let currentWalletId = $state<string | null>(null)
|
let currentWalletId = $state<string | null>(null)
|
||||||
@@ -279,29 +280,31 @@ export const EvmWallet = () => {
|
|||||||
|
|
||||||
const refresh = async () => {
|
const refresh = async () => {
|
||||||
if (!seed || !electrobun.rpc) return
|
if (!seed || !electrobun.rpc) return
|
||||||
loading = true
|
loadingBalance = true
|
||||||
|
loadingTransactions = true
|
||||||
error = ''
|
error = ''
|
||||||
tokenBalances = []
|
|
||||||
const account = mnemonicToAccount(seed)
|
const account = mnemonicToAccount(seed)
|
||||||
address = account.address
|
address = account.address
|
||||||
const client = createPublicClient({ transport: http(net().rpc) })
|
const client = createPublicClient({ transport: http(net().rpc) })
|
||||||
const [nativeBal, nativeBalError] = await tryCatch(
|
|
||||||
|
;(async () => {
|
||||||
|
const [nativeBal] = await tryCatch(
|
||||||
client.getBalance({ address: account.address }),
|
client.getBalance({ address: account.address }),
|
||||||
)
|
)
|
||||||
if (nativeBalError) {
|
if (nativeBal) balance = formatEther(nativeBal)
|
||||||
loading = false
|
const [bals] = await tryCatch(
|
||||||
return
|
|
||||||
}
|
|
||||||
balance = formatEther(nativeBal)
|
|
||||||
const [bals, balsError] = await tryCatch(
|
|
||||||
electrobun.rpc.request.fetchTokenBalances({
|
electrobun.rpc.request.fetchTokenBalances({
|
||||||
address, chainid: net().chainid,
|
address, chainid: net().chainid,
|
||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
if (balsError) error = balsError.message
|
if (bals) tokenBalances = bals
|
||||||
tokenBalances = bals ?? []
|
loadingBalance = false
|
||||||
|
})()
|
||||||
|
|
||||||
|
;(async () => {
|
||||||
await fetchTxHistory()
|
await fetchTxHistory()
|
||||||
loading = false
|
loadingTransactions = false
|
||||||
|
})()
|
||||||
}
|
}
|
||||||
|
|
||||||
const saveApiKey = async (key: string) => {
|
const saveApiKey = async (key: string) => {
|
||||||
@@ -358,7 +361,9 @@ export const EvmWallet = () => {
|
|||||||
get networks() { return networks },
|
get networks() { return networks },
|
||||||
get apiKey() { return apiKey },
|
get apiKey() { return apiKey },
|
||||||
get transactions() { return transactions },
|
get transactions() { return transactions },
|
||||||
get loading() { return loading },
|
get loading() { return loadingBalance || loadingTransactions },
|
||||||
|
get loadingBalance() { return loadingBalance },
|
||||||
|
get loadingTransactions() { return loadingTransactions },
|
||||||
get error() { return error },
|
get error() { return error },
|
||||||
get wallets() { return wallets },
|
get wallets() { return wallets },
|
||||||
get currentWalletId() { return currentWalletId },
|
get currentWalletId() { return currentWalletId },
|
||||||
|
|||||||
Reference in New Issue
Block a user