order sanity checks

This commit is contained in:
tim
2025-03-16 21:15:00 -04:00
parent b9975cda10
commit 5876efe29f
11 changed files with 130 additions and 33 deletions

View File

@@ -7,7 +7,7 @@
Place Dexorder
</v-btn>
<v-btn variant="text" prepend-icon="mdi-delete" v-if="co.orders.length>0"
:disabled="!orderChanged" @click="cancelOrder">Reset</v-btn>
:disabled="!orderChanged" @click="resetOrder">Reset</v-btn>
</template>
<div class="overflow-y-auto">
<needs-chart>
@@ -19,7 +19,21 @@
<v-card-actions>
<v-spacer/>
<v-btn @click="()=>showResetDialog=false">Keep Existing</v-btn>
<v-btn @click="()=>{co.resetOrders(); showResetDialog=false}" color="red" text="Reset Order"/>
<v-btn @click="doResetOrder" color="red" text="Reset Order"/>
</v-card-actions>
</v-card>
</v-dialog>
<v-dialog v-model="showWarnings" max-width="300">
<v-card prepend-icon="mdi-warning" title="Order Warnings" text="Your order has the following warnings:">
<v-card-text>
<v-list>
<v-list-item v-for="w of orderWarnings">{{w}}</v-list-item>
</v-list>
</v-card-text>
<v-card-actions>
<v-spacer/>
<v-btn @click="()=>showWarnings=false">Back</v-btn>
<v-btn @click="doPlaceOrder">Place Order</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
@@ -78,10 +92,19 @@ const valid = computed(()=>{
const orderChanged = computed(()=>!(co.orders.length===1 && co.orders[0].builders.length===0 && !co.orders[0].amount))
function cancelOrder() {
const showWarnings = ref(false)
const orderWarnings = ref([])
function resetOrder() {
showResetDialog.value = true
}
function doResetOrder() {
co.resetOrders();
orderWarnings.value = []
showResetDialog.value = false
}
watchEffect(()=>{
const removable = []
for (const order of ws.pendingOrders) {
@@ -108,17 +131,31 @@ watchEffect(()=>{
}
})
let built = []
async function placeOrder() {
const chartOrders = co.orders;
const built = []
const allWarns = []
built = []
for (const chartOrder of chartOrders) {
console.log('chartOrder', chartOrder)
const buildOrder = orderFuncs[chartOrder.id]
const order = buildOrder()
const {order, warnings} = buildOrder()
built.push(order)
allWarns.push(...warnings)
}
console.log('place orders', built)
if (allWarns.length > 0) {
orderWarnings.value = allWarns
showWarnings.value = true
return
}
await doPlaceOrder()
}
async function doPlaceOrder() {
console.log('place orders')
if (ws.transaction!==null) {
console.error('Transaction already in progress')
}