bugfix: vault creation loop

This commit is contained in:
Tim Olson
2023-12-27 16:35:16 -04:00
parent 9bb3a76b65
commit 907a61c501
3 changed files with 15 additions and 3 deletions

View File

@@ -80,6 +80,7 @@ const SwapOrder = `(
)` )`
export const vaultAbi = [ export const vaultAbi = [
'function version() view returns (uint8)',
'function withdraw(uint256 amount)', 'function withdraw(uint256 amount)',
'function withdrawTo(address payable recipient, uint256 amount)', 'function withdrawTo(address payable recipient, uint256 amount)',
'function withdraw(address token, uint256 amount)', 'function withdraw(address token, uint256 amount)',

View File

@@ -3,6 +3,7 @@ import {useStore} from "@/store/store";
import {socket} from "@/socket.js"; import {socket} from "@/socket.js";
import {contractOrNull, vaultAddress} from "@/blockchain/contract.js"; import {contractOrNull, vaultAddress} from "@/blockchain/contract.js";
import {vaultAbi} from "@/blockchain/abi.js"; import {vaultAbi} from "@/blockchain/abi.js";
import {SingletonCoroutine, sleep} from "@/misc.js";
export function onChainChanged(chainId) { export function onChainChanged(chainId) {
@@ -118,12 +119,13 @@ async function _discoverVaults(owner) {
// todo multi-vault scan // todo multi-vault scan
const num = 0 const num = 0
const addr = vaultAddress(owner, num) const addr = vaultAddress(owner, num)
console.log(`vault ${num} at`, addr)
const s = useStore() const s = useStore()
const vault = new ethers.Contract(addr, vaultAbi, s.provider) const vault = new ethers.Contract(addr, vaultAbi, s.provider)
let version = -1 let version = -1
try { try {
version = await vault.version(); version = await vault.version();
if( version === 1 ) { if( Number(version) === 1 ) {
console.log(`found vault ${num} at ${addr}`) console.log(`found vault ${num} at ${addr}`)
result.push(addr) result.push(addr)
} }
@@ -131,7 +133,7 @@ async function _discoverVaults(owner) {
console.error(`bad vault version ${version}`) console.error(`bad vault version ${version}`)
} }
catch (e) { catch (e) {
console.log(`no vault ${num}`) console.log(`no vault ${num}`, e)
} }
return result return result
} }
@@ -157,9 +159,16 @@ export function ensureVault2(chainId, owner, num) {
console.log('cannot create vault: no account logged in') console.log('cannot create vault: no account logged in')
return return
} }
socket.emit('ensureVault', chainId, owner, num) ensureVaultRoutine.invoke(chainId, owner, num)
} }
async function doEnsureVault(chainId, owner, num) {
socket.emit('ensureVault', chainId, owner, num)
await sleep()
}
const ensureVaultRoutine = new SingletonCoroutine(doEnsureVault, 100, false)
export async function pendOrder(order) { export async function pendOrder(order) {
console.log('order', JSON.stringify(order)) console.log('order', JSON.stringify(order))

View File

@@ -124,3 +124,5 @@ export function pairPrice(baseToken, quoteToken, price, decimals=null) {
return price return price
} }
export const sleep = ms => new Promise(r => setTimeout(r, ms))