bugfixes
This commit is contained in:
@@ -1,14 +1,12 @@
|
||||
import {ethers} from "ethers";
|
||||
import {factoryAbi, queryHelperAbi, vaultAbi} from "@/blockchain/abi.js";
|
||||
import {useStore} from "@/store/store.js";
|
||||
import {queryHelperAbi} from "@/blockchain/abi.js";
|
||||
|
||||
|
||||
export function vaultAddress( owner, num=0) {
|
||||
const s = useStore()
|
||||
if( !owner || !s.factory || !s.vaultInitCodeHash )
|
||||
export function vaultAddress( factory, vaultInitCodeHash, owner, num=0) {
|
||||
if( !owner || !factory || !vaultInitCodeHash )
|
||||
return null
|
||||
const salt = ethers.solidityPackedKeccak256(['address','uint8'],[owner,num])
|
||||
return ethers.getCreate2Address(s.factory, salt, s.vaultInitCodeHash)
|
||||
return ethers.getCreate2Address(factory, salt, vaultInitCodeHash)
|
||||
}
|
||||
|
||||
|
||||
@@ -21,22 +19,7 @@ export function contractOrNull(addr,abi,provider) {
|
||||
}
|
||||
}
|
||||
|
||||
export async function factoryContract() {
|
||||
const s = useStore()
|
||||
return contractOrNull(s.factory, factoryAbi, s.provider)
|
||||
export async function queryHelperContract(helper, provider) {
|
||||
return contractOrNull(helper, queryHelperAbi, provider)
|
||||
}
|
||||
|
||||
export async function queryHelperContract() {
|
||||
const s = useStore()
|
||||
return contractOrNull(s.helper, queryHelperAbi, s.provider)
|
||||
}
|
||||
|
||||
export async function poolContract(addr) {
|
||||
const s = useStore()
|
||||
return contractOrNull(addr, uniswapV3PoolAbi, s.provider)
|
||||
}
|
||||
|
||||
export async function vaultContract(owner, num, provider) {
|
||||
const addr = vaultAddress(owner, num)
|
||||
return new ethers.Contract(addr, vaultAbi, provider)
|
||||
}
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
import {queryHelperContract} from "@/blockchain/contract.js";
|
||||
import {Exchange} from "@/blockchain/orderlib.js";
|
||||
|
||||
|
||||
export async function findRoute(chainId, tokenA, tokenB) {
|
||||
console.log('getting query helper')
|
||||
const helper = await queryHelperContract()
|
||||
if (!helper)
|
||||
throw Error('no helper')
|
||||
export async function findRoute(helper, chainId, tokenA, tokenB) {
|
||||
console.log('getting raw routes', helper, tokenA.address, tokenB.address)
|
||||
const rawRoutes = await helper.getRoutes(tokenA.address, tokenB.address)
|
||||
// todo expose all available pools
|
||||
|
||||
@@ -87,9 +87,7 @@ const errorHandlingProxy = {
|
||||
|
||||
|
||||
export async function connectWallet() {
|
||||
// eth_getaccounts
|
||||
const s = useStore()
|
||||
await s.provider.getSigner()
|
||||
await new ethers.BrowserProvider(window.ethereum).getSigner();
|
||||
}
|
||||
|
||||
let pendingOrders = []
|
||||
@@ -115,7 +113,7 @@ async function _discoverVaults(owner) {
|
||||
// todo multi-vault scan
|
||||
// console.log('_discoverVaults',owner)
|
||||
const num = 0
|
||||
const addr = vaultAddress(owner, num)
|
||||
const addr = vaultAddress(s.factory, s.vaultInitCodeHash, owner, num)
|
||||
// console.log(`vault ${num} at`, addr)
|
||||
if( addr === null ) {
|
||||
s.vaults = []
|
||||
@@ -133,7 +131,7 @@ async function _discoverVaults(owner) {
|
||||
console.error(`bad vault version ${version}`)
|
||||
}
|
||||
catch (e) {
|
||||
console.log(`no vault ${num}`)
|
||||
console.log(`no vault ${num} at ${addr}`, e)
|
||||
}
|
||||
if( s.account == owner ) { // double-check the account since it could have changed during our await
|
||||
s.vaults = result
|
||||
|
||||
@@ -36,6 +36,7 @@ import RoutePrice from "@/components/RoutePrice.vue";
|
||||
import {findRoute} from "@/blockchain/route.js";
|
||||
import {SingletonCoroutine, routeInverted} from "@/misc.js";
|
||||
import {computed, ref} from "vue";
|
||||
import {queryHelperContract} from "@/blockchain/contract.js";
|
||||
|
||||
const s = useStore()
|
||||
const os = useOrderStore()
|
||||
@@ -83,9 +84,16 @@ async function componentFindRoute() {
|
||||
console.log('finding route', s.chainId.value, tokenA, tokenB)
|
||||
os.routesPending = true
|
||||
try {
|
||||
const result = await findRoute(s.chainId.value, tokenA, tokenB)
|
||||
console.log('found route', result)
|
||||
os.routes = result
|
||||
console.log('getting query helper')
|
||||
const helper = await queryHelperContract(s.helper, s.provider)
|
||||
if (!helper) {
|
||||
console.log('no helper')
|
||||
}
|
||||
else {
|
||||
const result = await findRoute(helper, s.chainId.value, tokenA, tokenB)
|
||||
console.log('found route', result)
|
||||
os.routes = result
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
console.log('ignoring routes exception', e)
|
||||
|
||||
@@ -90,7 +90,7 @@ const TokenRow = defineAsyncComponent(()=>import('./TokenRow.vue'))
|
||||
const s = useStore()
|
||||
|
||||
const props = defineProps(['owner', 'num'])
|
||||
const addr = computed(()=>vaultAddress(props.owner, props.num))
|
||||
const addr = computed(()=>vaultAddress(s.factory, s.vaultInitCodeHash, props.owner, props.num))
|
||||
const balances = computed(()=>{
|
||||
const bs = s.vaultBalances[addr.value]
|
||||
console.log('balances', addr.value, s.vaultBalances, bs)
|
||||
@@ -115,8 +115,7 @@ function checkVault() {
|
||||
ensureVault()
|
||||
}
|
||||
|
||||
// todo remove automatic vault creation for Alpha 2
|
||||
s.$subscribe((mutation, state)=>{checkVault()})
|
||||
setTimeout(checkVault, 1)
|
||||
|
||||
</script>
|
||||
|
||||
|
||||
@@ -7,12 +7,13 @@ const routes = [
|
||||
component: () => import('@/layouts/default/Layout.vue'),
|
||||
children: [
|
||||
{
|
||||
path: '',
|
||||
path: '/',
|
||||
name: 'Home',
|
||||
// route level code-splitting
|
||||
// this generates a separate chunk (about.[hash].js) for this route
|
||||
// which is lazy-loaded when the route is visited.
|
||||
component: () => import(/* webpackChunkName: "home" */ '@/views/Home.vue'),
|
||||
// component: () => import(/* webpackChunkName: "home" */ '@/views/Home.vue'),
|
||||
component: () => import(/* webpackChunkName: "vaultview" */ '@/views/VaultView.vue'),
|
||||
},
|
||||
{
|
||||
path: '/vault',
|
||||
|
||||
Reference in New Issue
Block a user