vault fixes; order total fill reactivity fix; provider fix

This commit is contained in:
Tim
2024-04-11 15:07:02 -04:00
parent 6d9cd4c748
commit b0daa446b3
8 changed files with 60 additions and 42 deletions

View File

@@ -117,7 +117,7 @@ export function isOpen(state) {
return state >= 1 && state < 3
}
export function parseOrderStatus(status) {
export function parseOrderStatus(chainId, status) {
let [
order,
fillFeeBP,
@@ -135,7 +135,7 @@ export function parseOrderStatus(status) {
trancheFilledIn = trancheFilledIn.map((f)=>BigInt(f))
trancheFilledOut = trancheFilledOut.map((f)=>BigInt(f))
return {
order, fillFeeBP, state, start, ocoGroup, filledIn, filledOut, trancheFilledIn, trancheFilledOut,
chainId, order, fillFeeBP, state, start, ocoGroup, filledIn, filledOut, trancheFilledIn, trancheFilledOut,
}
}

View File

@@ -6,8 +6,7 @@ import {vaultAbi} from "@/blockchain/abi.js";
import {SingletonCoroutine, uuid} from "@/misc.js";
import {defineStore} from "pinia";
import {ref} from "vue";
import {metadata, metadataMap} from "@/version.js";
import {OrderState} from "@/blockchain/orderlib.js";
import {metadataMap} from "@/version.js";
export const useWalletStore = defineStore('wallet', ()=>{
@@ -36,13 +35,16 @@ export function onChainChanged(chainId) {
const store = useStore()
const ws = useWalletStore()
if( chainId !== ws.chainId ) {
console.log('chain changed', chainId)
console.log('wallet chain changed', chainId)
ws.chainId = chainId
if (chainId.toString() in metadataMap) {
console.log('app chain changed', chainId)
store.chainId = chainId
store.account = null
}
else {
console.log('app chain NOT changed')
}
}
}
@@ -124,7 +126,7 @@ const errorHandlingProxy = {
export async function connectProvider(chainId) {
console.log('connecting provider to chainId', chainId)
console.log('connectProvider', chainId)
try {
return new ethers.BrowserProvider(window.ethereum, chainId)
}
@@ -143,6 +145,7 @@ export async function connectWallet(chainId) {
const p = await connectProvider(chainId)
if (p!==null) {
try {
console.log('getSigner')
return await p.getSigner();
}
catch (e) {
@@ -195,7 +198,12 @@ async function _discoverVaults(owner) {
s.vaults = []
return
}
const vault = new ethers.Contract(addr, vaultAbi, s.provider)
const provider = s.provider;
if (!provider) {
console.log('No provider')
return // do not change whatever was already found
}
const vault = new ethers.Contract(addr, vaultAbi, provider)
let version = -1
try {
version = await vault.version();
@@ -211,6 +219,7 @@ async function _discoverVaults(owner) {
console.log(`no vault ${num} at ${addr}`)
else
console.error(`discoverVaults failed`, e)
return // do not change what was already found todo is this correct?
}
if( s.account === owner ) { // double-check the account since it could have changed during our await
s.vaults = result