order cancels

This commit is contained in:
Tim Olson
2023-11-10 16:42:44 -04:00
parent 72e6333152
commit 85a17cf7a9
6 changed files with 34 additions and 11 deletions

View File

@@ -53,10 +53,11 @@ const Tranche = `(uint64,${Constraint}[])`
const SwapOrder = `(address,address,${Route},uint256,bool,bool,uint64,${Tranche}[])` const SwapOrder = `(address,address,${Route},uint256,bool,bool,uint64,${Tranche}[])`
export const vaultAbi = [ export const vaultAbi = [
'function withdraw(uint256) public', 'function withdraw(uint256)',
'function withdrawTo(address payable,uint256) public', 'function withdrawTo(address payable,uint256)',
'function withdraw(address,uint256) public', 'function withdraw(address,uint256)',
'function withdrawTo(address,address,uint256) public', 'function withdrawTo(address,address,uint256)',
'function placeOrder((address,address,(uint8,uint24),uint256,bool,bool,uint64,(uint16,(uint8,bytes)[])[])) public', 'function placeOrder((address,address,(uint8,uint24),uint256,bool,bool,uint64,(uint16,(uint8,bytes)[])[]))',
'function placeOrders((address,address,(uint8,uint24),uint256,bool,bool,uint64,(uint16,(uint8,bytes)[])[])[],uint8) public', 'function placeOrders((address,address,(uint8,uint24),uint256,bool,bool,uint64,(uint16,(uint8,bytes)[])[])[],uint8)',
'function cancelOrder(uint64)',
] ]

View File

@@ -157,6 +157,18 @@ export async function pendOrder(order) {
} }
export async function cancelOrder(vault, orderIndex) {
pendTransaction(async (signer)=> {
const contract = contractOrNull(vault, vaultAbi, signer)
if( contract === null ) {
console.error('vault contract was null while canceling order', vault, orderIndex)
return null
}
return await contract.cancelOrder(orderIndex)
})
}
export function flushOrders(vault) { export function flushOrders(vault) {
for( const order of pendingOrders ) for( const order of pendingOrders )
pendOrderAsTransaction(vault, order) pendOrderAsTransaction(vault, order)

View File

@@ -1,6 +1,6 @@
<template> <template>
<v-btn variant="outlined"> <v-btn variant="outlined">
<v-icon v-if="icon" :icon="icon" :color="color"></v-icon> <v-icon v-if="icon" :icon="icon" :color="color"></v-icon>&nbsp;
<slot/> <slot/>
</v-btn> </v-btn>
</template> </template>

View File

@@ -24,6 +24,7 @@
<td> <td>
{{pairPrice(inTokenAddr, outTokenAddr, vaultAddr, index, avgPrice)}} {{pairPrice(inTokenAddr, outTokenAddr, vaultAddr, index, avgPrice)}}
<btn v-if="pairPrice(inTokenAddr, outTokenAddr, vaultAddr, index, avgPrice)!==''" size="small" <btn v-if="pairPrice(inTokenAddr, outTokenAddr, vaultAddr, index, avgPrice)!==''" size="small"
variant="plain"
@click="inverted[[vaultAddr,index]] = !inverted[[vaultAddr,index]]"> @click="inverted[[vaultAddr,index]] = !inverted[[vaultAddr,index]]">
{{pair(inTokenAddr, outTokenAddr, vaultAddr,index)}} {{pair(inTokenAddr, outTokenAddr, vaultAddr,index)}}
</btn> </btn>
@@ -31,10 +32,13 @@
<td> <td>
<v-chip v-if="state===-1" prepend-icon="mdi-signature" color="yellow">Signing</v-chip> <v-chip v-if="state===-1" prepend-icon="mdi-signature" color="yellow">Signing</v-chip>
<v-chip v-if="state===0" prepend-icon="mdi-dots-horizontal" color="green">Open</v-chip> <v-chip v-if="state===0" prepend-icon="mdi-dots-horizontal" color="green">Open</v-chip>
<v-chip v-if="state===1" prepend-icon="mdi-close" color="red">Canceled</v-chip> <v-chip v-if="state===1" prepend-icon="mdi-cancel" color="red">Canceled</v-chip>
<v-chip v-if="state===2" prepend-icon="mdi-check-circle-outline" color="green">Completed</v-chip> <v-chip v-if="state===2" prepend-icon="mdi-check-circle-outline" color="green">Completed</v-chip>
<v-chip v-if="state===3" prepend-icon="mdi-progress-check" color="grey-darken-1">Expired</v-chip> <v-chip v-if="state===3" prepend-icon="mdi-progress-check" color="grey-darken-1">Expired</v-chip>
</td> </td>
<td>
<btn v-if="state===0" icon="mdi-cancel" color="red" @click="cancelOrder(vaultAddr,index)">Cancel</btn>
</td>
</tr> </tr>
</tbody> </tbody>
</v-table> </v-table>
@@ -46,6 +50,7 @@ import {useStore} from "@/store/store";
import {computed, reactive} from "vue"; import {computed, reactive} from "vue";
import {token} from "@/blockchain/token.js"; import {token} from "@/blockchain/token.js";
import Btn from "@/components/Btn.vue" import Btn from "@/components/Btn.vue"
import {cancelOrder} from "@/blockchain/wallet.js";
const s = useStore() const s = useStore()
const props = defineProps(['vault']) const props = defineProps(['vault'])

View File

@@ -10,7 +10,7 @@
<td> <td>
<v-menu> <v-menu>
<template v-slot:activator="{ props }"> <template v-slot:activator="{ props }">
<v-btn variant="plain" v-bind="props" icon="mdi-menu"/> <!-- mdi-dots-vertical --> <v-btn variant="plain" v-bind="props" icon="mdi-dots-vertical"/>
</template> </template>
<v-list> <v-list>
<v-list-subheader :title="token.symbol"/> <v-list-subheader :title="token.symbol"/>

View File

@@ -1,8 +1,12 @@
<template> <template>
<needs-provider> <needs-provider>
<needs-signer> <needs-signer>
<v-card title="Orders">
<v-card-item>
<btn icon="mdi-plus" color="green" class="mb-6" @click="$router.push('/twap')">New Dexorder</btn> <btn icon="mdi-plus" color="green" class="mb-6" @click="$router.push('/twap')">New Dexorder</btn>
<orders/> <orders/>
</v-card-item>
</v-card>
</needs-signer> </needs-signer>
</needs-provider> </needs-provider>
</template> </template>
@@ -12,6 +16,7 @@ import Orders from "@/components/Orders.vue";
import NeedsSigner from "@/components/NeedsSigner.vue"; import NeedsSigner from "@/components/NeedsSigner.vue";
import NeedsProvider from "@/components/NeedsProvider.vue"; import NeedsProvider from "@/components/NeedsProvider.vue";
import Btn from "@/components/Btn.vue"; import Btn from "@/components/Btn.vue";
import PhoneCard from "@/components/PhoneCard.vue";
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">