chart-based route finding

This commit is contained in:
Tim
2024-02-27 22:20:23 -04:00
parent fc126955b6
commit 9a5d7a1ce5
12 changed files with 126 additions and 46 deletions

View File

@@ -33,7 +33,7 @@
import TokenChoice from "@/components/TokenChoice.vue"
import {useOrderStore, useStore} from "@/store/store";
import RoutePrice from "@/components/RoutePrice.vue";
import {findRoute} from "@/blockchain/route.js";
import {findRoute, routeFinder} from "@/blockchain/route.js";
import {SingletonCoroutine, routeInverted} from "@/misc.js";
import {computed, ref} from "vue";
import {queryHelperContract} from "@/blockchain/contract.js";
@@ -46,7 +46,7 @@ const tokenA = computed({
return os.tokenA
},
set(value) {
if( !os.tokenA || os.tokenA.address !== value.address ) {
if( !os.tokenA || os.tokenA.a !== value.a ) {
os.tokenA = value
routeFinder.invoke()
}
@@ -57,7 +57,7 @@ const tokenB = computed({
return os.tokenB
},
set(value) {
if( !os.tokenB || os.tokenB.address !== value.address ) {
if( !os.tokenB || os.tokenB.a !== value.address ) {
os.tokenB = value
routeFinder.invoke()
}
@@ -75,36 +75,6 @@ const routes = computed({
}
})
async function componentFindRoute() {
const tokenA = os.tokenA
const tokenB = os.tokenB
os.routes = []
if (!tokenA || !tokenB)
return
console.log('finding route', s.chainId.value, tokenA, tokenB)
os.routesPending = true
try {
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)
}
finally {
os.routesPending = false
}
}
const routeFinder = new SingletonCoroutine(componentFindRoute,10)
routeFinder.invoke()