token amount bugfixes
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<span>
|
<span>
|
||||||
{{adjValue}}
|
{{adjValue}}
|
||||||
<btn v-if="showBtn && adjValue!==null" size="small" variant="plain" @click="invert()">{{pair}}</btn>
|
<btn v-if="showBtn && adjValue!==null" size="small" variant="plain" @click="invert()">{{pair?pair.toPrecision(5):''}}</btn>
|
||||||
</span>
|
</span>
|
||||||
<!-- todo optional pair label and inversion button -->
|
<!-- todo optional pair label and inversion button -->
|
||||||
</template>
|
</template>
|
||||||
@@ -18,20 +18,20 @@ const props = defineProps(['value', 'baseToken', 'quoteToken', 'baseAddr', 'quot
|
|||||||
const s = useStore()
|
const s = useStore()
|
||||||
const prefs = usePrefStore()
|
const prefs = usePrefStore()
|
||||||
|
|
||||||
const base = computed(() => props.baseToken ? props.baseToken : token(props.baseAddr))
|
const base = computed(() => props.baseToken ? props.baseToken : token(s.chainId, props.baseAddr))
|
||||||
const quote = computed(() => props.quoteToken ? props.quoteToken : token(props.quoteAddr))
|
const quote = computed(() => props.quoteToken ? props.quoteToken : token(s.chainId, props.quoteAddr))
|
||||||
|
|
||||||
function invert() {
|
function invert() {
|
||||||
const k = pairKey(base.value,quote.value)
|
const k = pairKey(base.value,quote.value)
|
||||||
prefs.inverted[k] = !prefs.inverted[k]
|
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 pair = computed(() => {
|
||||||
const inToken = props.baseToken ? props.baseToken : token(props.baseAddr)
|
const inToken = props.baseToken ? props.baseToken : token(s.chainId, props.baseAddr)
|
||||||
const outToken = props.quoteToken ? props.quoteToken : token(props.quoteAddr)
|
const outToken = props.quoteToken ? props.quoteToken : token(s.chainId, props.quoteAddr)
|
||||||
return !inToken || !outToken ? '___\\___' : prefs.inverted[pairKey(inToken, outToken)] ?
|
return !inToken || !outToken ? '___\\___' : prefs.inverted[pairKey(s.chainId, inToken, outToken)] ?
|
||||||
outToken.symbol + '\\' + inToken.symbol : inToken.symbol + '\\' + outToken.symbol
|
outToken.symbol + '\\' + inToken.symbol : inToken.symbol + '\\' + outToken.symbol
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,11 @@
|
|||||||
import {useStore} from "@/store/store";
|
import {useStore} from "@/store/store";
|
||||||
import {getToken} from "@/blockchain/token.js";
|
import {getToken} from "@/blockchain/token.js";
|
||||||
import {FixedNumber} from "ethers";
|
import {FixedNumber} from "ethers";
|
||||||
import {computed, ref} from "vue";
|
import {computed} from "vue";
|
||||||
|
|
||||||
const s = useStore()
|
const s = useStore()
|
||||||
const props = defineProps(['addr', 'amount', 'raw'])
|
const props = defineProps(['addr', 'amount', 'raw'])
|
||||||
const token = await getToken(props.addr)
|
const token = await getToken(s.chainId, props.addr)
|
||||||
const fmtAmount = computed(() => {
|
const fmtAmount = computed(() => {
|
||||||
if( props.amount === null || props.amount === undefined )
|
if( props.amount === null || props.amount === undefined )
|
||||||
return ''
|
return ''
|
||||||
|
|||||||
21
src/misc.js
21
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 token0 = tokenA.a < tokenB.a ? tokenA.a : tokenB.a
|
||||||
const token1 = 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) {
|
export function pairPriceAddr(chainId, baseTokenAddr, quoteTokenAddr, price) {
|
||||||
const baseToken = token(baseTokenAddr)
|
const baseToken = token(chainId, baseTokenAddr)
|
||||||
const quoteToken = token(quoteTokenAddr)
|
const quoteToken = token(chainId, quoteTokenAddr)
|
||||||
if (!baseToken || !quoteToken)
|
if (!baseToken || !quoteToken)
|
||||||
return null
|
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)
|
if (price === null || price === undefined)
|
||||||
return price
|
return price
|
||||||
if (decimals === null)
|
if (decimals === null)
|
||||||
decimals = baseToken.decimals - quoteToken.decimals
|
decimals = baseToken.d - quoteToken.d
|
||||||
console.log('pairPrice', baseToken, quoteToken, price, decimals)
|
|
||||||
if (decimals >= 0)
|
if (decimals >= 0)
|
||||||
price /= 10 ** decimals
|
price /= 10 ** decimals
|
||||||
else
|
else
|
||||||
price *= 10 ** -decimals
|
price *= 10 ** -decimals
|
||||||
const invertedKey = pairKey(baseToken, quoteToken);
|
const invertedKey = pairKey(chainId, baseToken, quoteToken);
|
||||||
const prefs = usePrefStore()
|
const prefs = usePrefStore()
|
||||||
if (!(invertedKey in prefs.inverted)) {
|
if (!(invertedKey in prefs.inverted)) {
|
||||||
// todo prefer stablecoins as the quote asset
|
// todo prefer stablecoins as the quote asset
|
||||||
|
|||||||
Reference in New Issue
Block a user