withdrawls
This commit is contained in:
44
src/blockchain/token.js
Normal file
44
src/blockchain/token.js
Normal file
@@ -0,0 +1,44 @@
|
||||
import {socket} from "@/socket.js";
|
||||
import {useStore} from "@/store/store.js";
|
||||
import {erc20Abi} from "@/blockchain/abi.js";
|
||||
import {ethers} from "ethers";
|
||||
|
||||
export async function getToken(addr) {
|
||||
const s = useStore()
|
||||
if (!(addr in s.tokens))
|
||||
await addExtraToken(addr)
|
||||
return s.tokens[addr]
|
||||
}
|
||||
|
||||
export async function addExtraToken(addr) {
|
||||
const prom = new Promise((resolve) => {
|
||||
const s = useStore()
|
||||
const chainId = s.chainId
|
||||
console.log('querying token', addr)
|
||||
socket.emit('lookupToken', chainId, addr, (info) => {
|
||||
console.log('server token info', info)
|
||||
if (info !== null) {
|
||||
s.addToken(chainId, info)
|
||||
resolve(info)
|
||||
}
|
||||
else {
|
||||
if( s.provider===null ) {
|
||||
console.log('warning: token lookup cancelled due to null provider', addr)
|
||||
resolve(null)
|
||||
return
|
||||
}
|
||||
const token = new ethers.Contract(addr, erc20Abi, s.provider)
|
||||
Promise.all( [token.symbol(), token.decimals()] ).then((symbol,decimals)=>{
|
||||
info = {
|
||||
address: addr,
|
||||
symbol: symbol,
|
||||
decimals: decimals,
|
||||
}
|
||||
s.addToken(chainId, info)
|
||||
resolve(info)
|
||||
})
|
||||
}
|
||||
})
|
||||
})
|
||||
return await prom
|
||||
}
|
||||
Reference in New Issue
Block a user