diff --git a/app/src/lib/components/TransferFrom/components/Cube/faces/Assets.svelte b/app/src/lib/components/TransferFrom/components/Cube/faces/Assets.svelte index bbb7a20380..9bf86a41ba 100644 --- a/app/src/lib/components/TransferFrom/components/Cube/faces/Assets.svelte +++ b/app/src/lib/components/TransferFrom/components/Cube/faces/Assets.svelte @@ -1,29 +1,29 @@
diff --git a/app/src/lib/components/TransferFrom/components/Cube/faces/Chains.svelte b/app/src/lib/components/TransferFrom/components/Cube/faces/Chains.svelte index 0a8a105697..3c5183f7f5 100644 --- a/app/src/lib/components/TransferFrom/components/Cube/faces/Chains.svelte +++ b/app/src/lib/components/TransferFrom/components/Cube/faces/Chains.svelte @@ -1,37 +1,37 @@
diff --git a/app/src/lib/components/TransferFrom/components/Cube/faces/Intent.svelte b/app/src/lib/components/TransferFrom/components/Cube/faces/Intent.svelte index 97bdc872a1..5a916b9085 100644 --- a/app/src/lib/components/TransferFrom/components/Cube/faces/Intent.svelte +++ b/app/src/lib/components/TransferFrom/components/Cube/faces/Intent.svelte @@ -2,9 +2,7 @@ import Direction from "$lib/components/TransferFrom/components/Direction.svelte" import SelectedAsset from "$lib/components/TransferFrom/components/SelectedAsset.svelte" import type { Readable } from "svelte/store" -import type { - ValidationStore, -} from "$lib/components/TransferFrom/transfer/validation.ts" +import type { ValidationStore } from "$lib/components/TransferFrom/transfer/validation.ts" import { Button } from "$lib/components/ui/button" import type { IntentsStore } from "$lib/components/TransferFrom/transfer/intents.ts" import type { CubeFaces } from "$lib/components/TransferFrom/components/Cube/types.ts" diff --git a/app/src/lib/components/TransferFrom/components/Cube/faces/Transfer.svelte b/app/src/lib/components/TransferFrom/components/Cube/faces/Transfer.svelte index 1f55a2ce92..49f9b34122 100644 --- a/app/src/lib/components/TransferFrom/components/Cube/faces/Transfer.svelte +++ b/app/src/lib/components/TransferFrom/components/Cube/faces/Transfer.svelte @@ -50,7 +50,10 @@ let transferState: Writable = writable({ kind: "PRE_TRANSFER" }) const transfer = async () => { if (!$validation.isValid) return - let parsedAmount = parseUnits($validation.transfer.amount, $validation.transfer.asset.metadata.decimals) + let parsedAmount = parseUnits( + $validation.transfer.amount, + $validation.transfer.asset.metadata.decimals + ) /** --- APTOS START --- */ if ($validation.transfer.sourceChain.rpc_type === "aptos") { diff --git a/app/src/lib/components/TransferFrom/components/SelectedAsset.svelte b/app/src/lib/components/TransferFrom/components/SelectedAsset.svelte index e80550369e..84f5814d52 100644 --- a/app/src/lib/components/TransferFrom/components/SelectedAsset.svelte +++ b/app/src/lib/components/TransferFrom/components/SelectedAsset.svelte @@ -1,22 +1,22 @@
diff --git a/app/src/lib/components/TransferFrom/transfer/balances.ts b/app/src/lib/components/TransferFrom/transfer/balances.ts index 135d5c674c..a5748a28b9 100644 --- a/app/src/lib/components/TransferFrom/transfer/balances.ts +++ b/app/src/lib/components/TransferFrom/transfer/balances.ts @@ -1,11 +1,9 @@ - import type { UserAddresses } from "$lib/types.ts" import { userAddrCosmos } from "$lib/wallet/cosmos" import { userAddrEvm } from "$lib/wallet/evm" import { userAddressAptos } from "$lib/wallet/aptos" -import type { QueryObserverResult } from "@tanstack/query-core" -import type {BalanceData} from "$lib/queries/balance"; -import {derived, type Readable, writable} from "svelte/store"; +import type { BalanceData } from "$lib/queries/balance" +import { derived, type Readable, writable } from "svelte/store" export let userAddress: Readable = derived( [userAddrCosmos, userAddrEvm, userAddressAptos], @@ -16,4 +14,4 @@ export let userAddress: Readable = derived( }) ) -export const balanceStore = writable([]) \ No newline at end of file +export const balanceStore = writable>>([]) diff --git a/app/src/lib/components/TransferFrom/transfer/context.ts b/app/src/lib/components/TransferFrom/transfer/context.ts index 47c78b7a06..d9478583bc 100644 --- a/app/src/lib/components/TransferFrom/transfer/context.ts +++ b/app/src/lib/components/TransferFrom/transfer/context.ts @@ -17,37 +17,34 @@ export interface ContextStore { } export function createContextStore(chains: Array): Readable { - const balances = derived( - balanceStore, - ($rawBalances: BalanceData[][]) => { - if ($rawBalances?.length === 0) { - return chains.map(chain => ({ - chainId: chain.chain_id, - balances: [] - })) - } - - return chains.map((chain, chainIndex) => { - const chainBalances = $rawBalances[chainIndex] + const balances = derived(balanceStore, ($rawBalances: Array>) => { + if ($rawBalances?.length === 0) { + return chains.map(chain => ({ + chainId: chain.chain_id, + balances: [] + })) + } - if (!chainBalances || chainBalances.length === 0) { - return { - chainId: chain.chain_id, - balances: [] - } - } + return chains.map((chain, chainIndex) => { + const chainBalances = $rawBalances[chainIndex] + if (!chainBalances || chainBalances.length === 0) { return { chainId: chain.chain_id, - balances: chainBalances + balances: [] } - }) - } - ) as Readable + } + + return { + chainId: chain.chain_id, + balances: chainBalances + } + }) + }) as Readable return derived([userAddress, balances], ([$userAddress, $balances]) => ({ chains, userAddress: $userAddress, balances: $balances })) -} \ No newline at end of file +} diff --git a/app/src/lib/components/TransferFrom/transfer/intents.ts b/app/src/lib/components/TransferFrom/transfer/intents.ts index f135e8b67d..b47ad4cfd9 100644 --- a/app/src/lib/components/TransferFrom/transfer/intents.ts +++ b/app/src/lib/components/TransferFrom/transfer/intents.ts @@ -49,12 +49,9 @@ export function createIntentStore( })) }) - const selectedAsset = derived( - [sourceAssets, rawIntents], - ([$sourceAssets, $rawIntents]) => { - return $sourceAssets.find(x => x.metadata.denom === $rawIntents.asset) ?? null - } - ) + const selectedAsset = derived([sourceAssets, rawIntents], ([$sourceAssets, $rawIntents]) => { + return $sourceAssets.find(x => x.metadata.denom === $rawIntents.asset) ?? null + }) return derived( [sourceChain, destinationChain, selectedAsset, sourceAssets, rawIntents], @@ -67,4 +64,4 @@ export function createIntentStore( amount: $rawIntents.amount }) ) -} \ No newline at end of file +} diff --git a/app/src/lib/components/TransferFrom/transfer/validation.ts b/app/src/lib/components/TransferFrom/transfer/validation.ts index f7b02b425a..b5b9d12b70 100644 --- a/app/src/lib/components/TransferFrom/transfer/validation.ts +++ b/app/src/lib/components/TransferFrom/transfer/validation.ts @@ -81,7 +81,10 @@ export function createValidationStore( // Amount validation if ($rawIntents.amount && $intents.selectedAsset) { try { - const parsedAmount = parseUnits($rawIntents.amount, $intents.selectedAsset.metadata.decimals ?? 0) + const parsedAmount = parseUnits( + $rawIntents.amount, + $intents.selectedAsset.metadata.decimals ?? 0 + ) if (parsedAmount <= 0n) { errors.amount = "Amount must be greater than 0" } @@ -120,13 +123,7 @@ export function createValidationStore( ([$rawIntents, $intents, $context, $errors]) => { if (Object.keys($errors).length > 0) return undefined - if ( - !( - $intents.sourceChain && - $intents.destinationChain && - $intents.selectedAsset - ) - ) { + if (!($intents.sourceChain && $intents.destinationChain && $intents.selectedAsset)) { return undefined } @@ -151,4 +148,4 @@ export function createValidationStore( ? { transfer: $transfer as ValidTransfer, errors: $errors, isValid: true } : { transfer: undefined, errors: $errors, isValid: false } }) -} \ No newline at end of file +} diff --git a/app/src/lib/queries/balance/index.ts b/app/src/lib/queries/balance/index.ts index b4d8a2f60b..05c123b66c 100644 --- a/app/src/lib/queries/balance/index.ts +++ b/app/src/lib/queries/balance/index.ts @@ -1,12 +1,12 @@ -import {derived, type Readable, writable} from "svelte/store" -import {bech32ToBech32Address} from "@unionlabs/client" -import {type Address, isAddress} from "viem" -import type {Chain, ChainAsset, UserAddresses} from "$lib/types" -import {erc20ReadMulticall} from "./evm/multicall.ts" -import {getCosmosChainBalances} from "./cosmos.ts" -import {getAptosChainBalances} from "./aptos.ts" -import {createQueries} from "@tanstack/svelte-query" -import type {QueryObserverResult} from "@tanstack/query-core" +import { derived, type Readable, writable } from "svelte/store" +import { bech32ToBech32Address } from "@unionlabs/client" +import { type Address, isAddress } from "viem" +import type { Chain, ChainAsset, UserAddresses } from "$lib/types" +import { erc20ReadMulticall } from "./evm/multicall.ts" +import { getCosmosChainBalances } from "./cosmos.ts" +import { getAptosChainBalances } from "./aptos.ts" +import { createQueries } from "@tanstack/svelte-query" +import type { QueryObserverResult } from "@tanstack/query-core" export type AssetMetadata = { denom: string @@ -18,7 +18,7 @@ export type AssetMetadata = { metadata_level: "graphql" | "onchain" | "none" } export type BalanceData = { - balance: string; + balance: string metadata: AssetMetadata } @@ -35,7 +35,7 @@ export async function getAssetInfo(chain: Chain, denom: string): Promise isAddress(denom)).map(normalizeAddress) : chain.assets - .filter((asset): asset is ChainAsset & { denom: Address } => isAddress(asset.denom)) - .map(asset => normalizeAddress(asset.denom)) + .filter((asset): asset is ChainAsset & { denom: Address } => isAddress(asset.denom)) + .map(asset => normalizeAddress(asset.denom)) const results = await erc20ReadMulticall({ chainId: chain.chain_id, @@ -112,16 +112,16 @@ export async function getUserBalances( contractAddresses: contractAddresses as Array
}) - const balances = await Promise.all(results - .map(async (result, index) => { - const denom = normalizeAddress(contractAddresses[index]); - const balance = result.balance?.toString() ?? "0"; - const metadata = await getAssetInfo(chain, denom); - return { balance, metadata }; + const balances = await Promise.all( + results.map(async (result, index) => { + const denom = normalizeAddress(contractAddresses[index]) + const balance = result.balance?.toString() ?? "0" + const metadata = await getAssetInfo(chain, denom) + return { balance, metadata } }) - ); + ) - return balances.filter(result => BigInt(result.balance) > 0n); + return balances.filter(result => BigInt(result.balance) > 0n) } if (chain.rpc_type === "cosmos") { @@ -141,10 +141,12 @@ export async function getUserBalances( walletAddress: bech32Address }) - return Promise.all(balances.map(async balance => ({ - balance: balance.balance.toString(), - metadata: await getAssetInfo(chain, normalizeAddress(balance.address)) - }))) + return Promise.all( + balances.map(async balance => ({ + balance: balance.balance.toString(), + metadata: await getAssetInfo(chain, normalizeAddress(balance.address)) + })) + ) } if (chain.rpc_type === "aptos") { @@ -159,10 +161,12 @@ export async function getUserBalances( walletAddress: address }) - return Promise.all(balances.map(async balance => ({ - balance: balance.balance.toString(), - metadata: await getAssetInfo(chain, normalizeAddress(balance.address)) - }))) + return Promise.all( + balances.map(async balance => ({ + balance: balance.balance.toString(), + metadata: await getAssetInfo(chain, normalizeAddress(balance.address)) + })) + ) } return [] @@ -227,7 +231,9 @@ export function createChainBalances( // Merge with placeholder balances to ensure all assets are represented const mergedBalances = initialBalances.map(placeholder => { - const enriched = balances.find(b => b.metadata.denom === placeholder.metadata.denom) + const enriched = balances.find( + b => b.metadata.denom === placeholder.metadata.denom + ) return enriched || placeholder }) @@ -249,8 +255,10 @@ export function createChainBalances( } })) .sort((a, b) => { - const aValue = BigInt(a.balance) * BigInt(10 ** (18 - (a.metadata.decimals ?? 18))) - const bValue = BigInt(b.balance) * BigInt(10 ** (18 - (b.metadata.decimals ?? 18))) + const aValue = + BigInt(a.balance) * BigInt(10 ** (18 - (a.metadata.decimals ?? 18))) + const bValue = + BigInt(b.balance) * BigInt(10 ** (18 - (b.metadata.decimals ?? 18))) return bValue > aValue ? 1 : -1 }) } catch (error) { @@ -279,4 +287,4 @@ export function allChainBalances(chains: Array, addressStore: Readable createChainBalances(chain, addressStore)) return derived(chainStores, $chainStores => $chainStores) -} \ No newline at end of file +} diff --git a/app/src/routes/balances/UserBalances.svelte b/app/src/routes/balances/UserBalances.svelte index 19b44f2a4b..e01a45a128 100644 --- a/app/src/routes/balances/UserBalances.svelte +++ b/app/src/routes/balances/UserBalances.svelte @@ -1,44 +1,44 @@