null & undefined handling
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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
25
src/components/Footer.vue
Normal 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>
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
|
||||
@@ -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: '',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<TimedOrder/>
|
||||
<!-- <Vault/>-->
|
||||
<!-- <TimedOrder/>-->
|
||||
<Vault/>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user