null & undefined handling

This commit is contained in:
Tim Olson
2024-01-07 23:12:57 -04:00
parent 8fabfe0d2b
commit 52a41c6f81
11 changed files with 52 additions and 20 deletions

View File

@@ -5,8 +5,7 @@ import {useStore} from "@/store/store.js";
export function vaultAddress( owner, num=0) {
const s = useStore()
console.log('vaultAddress', owner, s.factory, s.vaultInitCodeHash)
if( !owner )
if( !owner || !s.factory || !s.vaultInitCodeHash )
return null
const salt = ethers.solidityPackedKeccak256(['address','uint8'],[owner,num])
return ethers.getCreate2Address(s.factory, salt, s.vaultInitCodeHash)

View File

@@ -106,13 +106,21 @@ function discoverVaults(owner) {
const doDiscoverVaults = new SingletonCoroutine(_discoverVaults, 50, false)
async function _discoverVaults(owner) {
console.log('_discoverVaults',owner)
const result = []
const s = useStore()
if( !owner || !s.chainId || !s.account) {
s.vaults = []
return
}
// todo multi-vault scan
// console.log('_discoverVaults',owner)
const num = 0
const addr = vaultAddress(owner, num)
console.log(`vault ${num} at`, addr)
const s = useStore()
// console.log(`vault ${num} at`, addr)
if( addr === null ) {
s.vaults = []
return
}
const vault = new ethers.Contract(addr, vaultAbi, s.provider)
let version = -1
try {
@@ -127,7 +135,7 @@ async function _discoverVaults(owner) {
catch (e) {
console.log(`no vault ${num}`)
}
if( s.account === owner ) { // double-check the account since it could have changed during our await
if( s.account == owner ) { // double-check the account since it could have changed during our await
s.vaults = result
if( pendingOrders.length )
if( result.length )

25
src/components/Footer.vue Normal file
View File

@@ -0,0 +1,25 @@
<template>
<v-footer class="text-center d-flex flex-column">
<div>
<v-btn icon="mdi-facebook" @click="window.open('https://facebook.com','facebook')"/>
<v-btn icon="mdi-twitter" @click="window.open('https://x.com','twitter')"/>
<v-btn icon="mdi-reddit" @click="window.open('https://reddit.com','reddit')"/>
<v-btn icon="mdi-discord" @click="window.open('https://discord.com','discord')"/>
</div>
<div>
Dexorder
</div>
</v-footer>
</template>
<script setup>
import {useStore} from "@/store/store";
const s = useStore()
</script>
<style scoped lang="scss">
@use "src/styles/vars" as *;
</style>

View File

@@ -26,7 +26,7 @@ function invert() {
prefs.inverted[k] = !prefs.inverted[k]
}
const adjValue = computed(() => !base.value || !quote.value ? null : pairPrice(base.value, quote.value, props.value, props.decimals).toPrecision(5))
const adjValue = computed(() => props.value === null || props.value === undefined || !base.value || !quote.value ? null : pairPrice(base.value, quote.value, props.value, props.decimals).toPrecision(5))
const pair = computed(() => {
const inToken = props.baseToken ? props.baseToken : token(props.baseAddr)

View File

@@ -1,16 +1,18 @@
<template>
<v-app>
<default-bar/>
<app-bar/>
<nav-drawer/>
<default-view/>
<main-view/>
<footer/>
</v-app>
</template>
<script setup>
import DefaultBar from './AppBar.vue'
import DefaultView from './View.vue'
import {useStore} from "@/store/store.js";
import AppBar from './AppBar.vue'
import MainView from './MainView.vue'
import NavDrawer from "@/components/NavDrawer.vue";
import Footer from "@/components/Footer.vue";
import {useStore} from "@/store/store.js";
const s = useStore()
</script>

View File

@@ -28,6 +28,7 @@ export class SingletonCoroutine {
catch (e) {
if( self.retry ) {
console.log('retrying', this.f, 'due to error', e)
self.timeout = null
self.invoke(self.args)
}
else

View File

@@ -4,7 +4,7 @@ import { createRouter, createWebHistory } from 'vue-router'
const routes = [
{
path: '/',
component: () => import('@/layouts/default/Default.vue'),
component: () => import('@/layouts/default/Layout.vue'),
children: [
{
path: '',

View File

@@ -2,9 +2,6 @@
import { defineStore } from 'pinia'
import {knownTokens} from "@/knownTokens.js";
import {computed, ref} from "vue";
import {ethers} from "ethers";
import {onChainChanged} from "@/blockchain/wallet.js";
// USING THE STORE:
//
@@ -141,7 +138,7 @@ export const useOrderStore = defineStore('order', ()=> {
// Order Input Forms
// const tokenA = ref(null) // defined at top
// const tokenB = ref(null)
const buy = ref(false)
const buy = ref(true)
const inverted = ref(false)
const amount = ref(100) // todo adjust default
const amountIsTokenA = ref(false) // todo adjust default

View File

@@ -1,6 +1,6 @@
<template>
<TimedOrder/>
<!-- <Vault/>-->
<!-- <TimedOrder/>-->
<Vault/>
</template>
<script setup>

View File

@@ -2,8 +2,8 @@
<!-- todo needs account -->
<needs-signer>
<vault :owner="s.account" :num="0"/>
<new-order class="my-6"/>
<faucet class="mt-3"/>
<new-order class="my-6"/>
</needs-signer>
</template>