From b0daa446b3b5774c574969b36de618fcf420c145 Mon Sep 17 00:00:00 2001 From: Tim Date: Thu, 11 Apr 2024 15:07:02 -0400 Subject: [PATCH] vault fixes; order total fill reactivity fix; provider fix --- src/blockchain/orderlib.js | 4 +-- src/blockchain/wallet.js | 19 +++++++++---- src/components/Faucet.vue | 4 ++- src/components/Pulse.vue | 5 ---- src/components/Status.vue | 49 +++++++++++++++++++++------------- src/components/TokenAmount.vue | 6 ++--- src/socket.js | 6 ++--- src/store/store.js | 9 ++++--- 8 files changed, 60 insertions(+), 42 deletions(-) diff --git a/src/blockchain/orderlib.js b/src/blockchain/orderlib.js index fa18814..18d33ba 100644 --- a/src/blockchain/orderlib.js +++ b/src/blockchain/orderlib.js @@ -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, } } diff --git a/src/blockchain/wallet.js b/src/blockchain/wallet.js index 0194421..0eedf98 100644 --- a/src/blockchain/wallet.js +++ b/src/blockchain/wallet.js @@ -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 diff --git a/src/components/Faucet.vue b/src/components/Faucet.vue index 5093727..8999137 100644 --- a/src/components/Faucet.vue +++ b/src/components/Faucet.vue @@ -28,6 +28,8 @@ import Btn from "@/components/Btn.vue"; import {socket} from "@/socket.js"; import {metadata} from "@/version.js"; +const DISABLED_DURATION = 60_000; + const props = defineProps({ text: {default:'GIB!'}, }) @@ -78,7 +80,7 @@ function gib() { if (Object.keys(tokenAmounts).length>0) { disabled.value = true socket.emit('gib', s.chainId, s.account, s.vault, tokenAmounts ) - setTimeout(()=>disabled.value=false, 60_000) + setTimeout(()=>disabled.value=false, DISABLED_DURATION) } } } diff --git a/src/components/Pulse.vue b/src/components/Pulse.vue index ef7283f..4e58711 100644 --- a/src/components/Pulse.vue +++ b/src/components/Pulse.vue @@ -14,20 +14,15 @@ let lastValue = props.touch function pulse() { if (props.touch === lastValue) return - console.log(`value changed from ${lastValue} to ${props.touch}`) lastValue = props.touch const e = element.value; - console.log('element', e) if (!e.classList.contains('pulse')) { // add class for the first time - console.log('first pulse') e.classList.add('pulse') } else { // restart - console.log('reset pulse') e.getAnimations().forEach((a) => { - console.log('animation', a) a.cancel(); a.play(); }) diff --git a/src/components/Status.vue b/src/components/Status.vue index 939734a..18da8ee 100644 --- a/src/components/Status.vue +++ b/src/components/Status.vue @@ -4,29 +4,37 @@ item-selectable="selectable" :show-select="false" :show-expand="true">