bugfixes
This commit is contained in:
42
src/misc.js
42
src/misc.js
@@ -1,5 +1,6 @@
|
||||
import {FixedNumber} from "ethers";
|
||||
import {useStore} from "@/store/store.js";
|
||||
import {usePrefStore, useStore} from "@/store/store.js";
|
||||
import {token} from "@/blockchain/token.js";
|
||||
|
||||
export class SingletonCoroutine {
|
||||
constructor(f, delay=10, retry=true) {
|
||||
@@ -84,3 +85,42 @@ export function timestamp(date=null) {
|
||||
date = new Date()
|
||||
return Math.round(date.getTime() / 1000)
|
||||
}
|
||||
|
||||
|
||||
export function pairKey(tokenA, tokenB) {
|
||||
const token0 = tokenA.address < tokenB.address ? tokenA.address : tokenB.address
|
||||
const token1 = tokenA.address > tokenB.address ? tokenA.address : tokenB.address
|
||||
return [token0, token1];
|
||||
}
|
||||
|
||||
|
||||
export function pairPriceAddr(baseTokenAddr, quoteTokenAddr, price) {
|
||||
const baseToken = token(baseTokenAddr)
|
||||
const quoteToken = token(quoteTokenAddr)
|
||||
if( !baseToken || !quoteToken )
|
||||
return null
|
||||
return pairPrice(baseToken, quoteToken, price)
|
||||
}
|
||||
|
||||
|
||||
export function pairPrice(baseToken, quoteToken, price, decimals=null) {
|
||||
if( price === null || price === undefined )
|
||||
return price
|
||||
if( decimals === null )
|
||||
decimals = baseToken.decimals-quoteToken.decimals
|
||||
console.log('pairPrice', baseToken, quoteToken, price, decimals)
|
||||
if( decimals >= 0 )
|
||||
price /= 10 ** decimals
|
||||
else
|
||||
price *= 10 ** -decimals
|
||||
const invertedKey = pairKey(baseToken, quoteToken);
|
||||
const prefs = usePrefStore()
|
||||
if( !(invertedKey in prefs.inverted) ) {
|
||||
// todo prefer stablecoins as the quote asset
|
||||
prefs.inverted[invertedKey] = false
|
||||
}
|
||||
if( prefs.inverted[invertedKey] )
|
||||
price = 1/price
|
||||
return price
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user