From 6a01e5bab83018b7649c3a92b01ca909fff61501 Mon Sep 17 00:00:00 2001 From: Tim Date: Wed, 27 Mar 2024 16:18:44 -0400 Subject: [PATCH] token amount bugfixes --- src/components/PairPrice.vue | 14 +++++++------- src/components/TokenAmount.vue | 4 ++-- src/misc.js | 21 +++++++++++---------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/components/PairPrice.vue b/src/components/PairPrice.vue index d437cb8..2fccf98 100644 --- a/src/components/PairPrice.vue +++ b/src/components/PairPrice.vue @@ -1,7 +1,7 @@ @@ -18,20 +18,20 @@ const props = defineProps(['value', 'baseToken', 'quoteToken', 'baseAddr', 'quot const s = useStore() const prefs = usePrefStore() -const base = computed(() => props.baseToken ? props.baseToken : token(props.baseAddr)) -const quote = computed(() => props.quoteToken ? props.quoteToken : token(props.quoteAddr)) +const base = computed(() => props.baseToken ? props.baseToken : token(s.chainId, props.baseAddr)) +const quote = computed(() => props.quoteToken ? props.quoteToken : token(s.chainId, props.quoteAddr)) function invert() { const k = pairKey(base.value,quote.value) prefs.inverted[k] = !prefs.inverted[k] } -const adjValue = computed(() => props.value === null || props.value === undefined || !base.value || !quote.value ? null : pairPrice(base.value, quote.value, props.value, props.decimals).toPrecision(5)) +const adjValue = computed(() => props.value === null || props.value === undefined || !base.value || !quote.value ? null : pairPrice(base.value, quote.value, props.value, props.decimals)) const pair = computed(() => { - const inToken = props.baseToken ? props.baseToken : token(props.baseAddr) - const outToken = props.quoteToken ? props.quoteToken : token(props.quoteAddr) - return !inToken || !outToken ? '___\\___' : prefs.inverted[pairKey(inToken, outToken)] ? + const inToken = props.baseToken ? props.baseToken : token(s.chainId, props.baseAddr) + const outToken = props.quoteToken ? props.quoteToken : token(s.chainId, props.quoteAddr) + return !inToken || !outToken ? '___\\___' : prefs.inverted[pairKey(s.chainId, inToken, outToken)] ? outToken.symbol + '\\' + inToken.symbol : inToken.symbol + '\\' + outToken.symbol }) diff --git a/src/components/TokenAmount.vue b/src/components/TokenAmount.vue index e5657d7..7b97e76 100644 --- a/src/components/TokenAmount.vue +++ b/src/components/TokenAmount.vue @@ -6,11 +6,11 @@ import {useStore} from "@/store/store"; import {getToken} from "@/blockchain/token.js"; import {FixedNumber} from "ethers"; -import {computed, ref} from "vue"; +import {computed} from "vue"; const s = useStore() const props = defineProps(['addr', 'amount', 'raw']) -const token = await getToken(props.addr) +const token = await getToken(s.chainId, props.addr) const fmtAmount = computed(() => { if( props.amount === null || props.amount === undefined ) return '' diff --git a/src/misc.js b/src/misc.js index 8c6a5ef..70bb862 100644 --- a/src/misc.js +++ b/src/misc.js @@ -90,33 +90,34 @@ export function timestamp(date = null) { } -export function pairKey(tokenA, tokenB) { +export function pairKey(chainId, tokenA, tokenB) { const token0 = tokenA.a < tokenB.a ? tokenA.a : tokenB.a const token1 = tokenA.a > tokenB.a ? tokenA.a : tokenB.a - return [token0, token1]; + return [chainId, token0, token1]; } -export function pairPriceAddr(baseTokenAddr, quoteTokenAddr, price) { - const baseToken = token(baseTokenAddr) - const quoteToken = token(quoteTokenAddr) +export function pairPriceAddr(chainId, baseTokenAddr, quoteTokenAddr, price) { + const baseToken = token(chainId, baseTokenAddr) + const quoteToken = token(chainId, quoteTokenAddr) if (!baseToken || !quoteToken) return null - return pairPrice(baseToken, quoteToken, price) + return pairPrice(chainId, baseToken, quoteToken, price) } -export function pairPrice(baseToken, quoteToken, price, decimals = null) { +export function pairPrice(chainId, baseToken, quoteToken, price, decimals = null) { + if (!price) return null + console.log('pairPrice', chainId, baseToken, quoteToken, price, decimals) if (price === null || price === undefined) return price if (decimals === null) - decimals = baseToken.decimals - quoteToken.decimals - console.log('pairPrice', baseToken, quoteToken, price, decimals) + decimals = baseToken.d - quoteToken.d if (decimals >= 0) price /= 10 ** decimals else price *= 10 ** -decimals - const invertedKey = pairKey(baseToken, quoteToken); + const invertedKey = pairKey(chainId, baseToken, quoteToken); const prefs = usePrefStore() if (!(invertedKey in prefs.inverted)) { // todo prefer stablecoins as the quote asset