transaction placement dialog

This commit is contained in:
tim
2024-11-11 20:55:28 -04:00
parent 43891434c5
commit a9bf23ddbb
18 changed files with 439 additions and 122 deletions

View File

@@ -29,20 +29,21 @@
<script setup>
import {orderFuncs, useChartOrderStore} from "@/orderbuild.js";
import {addSymbolChangedCallback, removeSymbolChangedCallback} from "@/charts/chart.js";
import {computed, onBeforeUnmount, ref} from "vue";
import {computed, onBeforeUnmount, ref, toRaw, watchEffect} from "vue";
import {useOrderStore, useStore} from "@/store/store.js";
import {routeFinder} from "@/blockchain/route.js";
import ChartOrder from "@/components/chart/ChartOrder.vue";
import {useTheme} from "vuetify";
import {pendOrder} from "@/blockchain/wallet.js";
import {useWalletStore} from "@/blockchain/wallet.js";
import ToolbarPane from "@/components/chart/ToolbarPane.vue";
import NeedsChart from "@/components/NeedsChart.vue";
import {nav} from "@/misc.js";
import {PlaceOrderTransaction} from "@/blockchain/transaction.js";
const s = useStore()
const co = useChartOrderStore()
const os = useOrderStore()
const ws = useWalletStore()
function changeSymbol(symbol) {
console.log('changeSymbol', symbol)
@@ -79,6 +80,32 @@ function cancelOrder() {
showResetDialog.value = true
}
watchEffect(()=>{
const removable = []
for (const order of ws.pendingOrders) {
console.log('pend state', order.state)
switch (order.state) {
case PendingOrderState.Sent:
break
case PendingOrderState.Rejected:
removable.push(order)
break
case PendingOrderState.Signing:
break
case PendingOrderState.Submitted:
removable.push(order)
break
default:
console.error('unknown pend state', order.state)
}
}
if (removable.length>0) {
if (ws.pendingOrders.length!==removable.length)
console.error('Not all orders were rejected') // todo multiple orders / order group
ws.pendingOrders = []
}
})
async function placeOrder() {
const chartOrders = co.orders;
@@ -90,13 +117,11 @@ async function placeOrder() {
built.push(order)
}
console.log('place orders', built)
if (built.length !== 1) {
console.error('Multiple orders not supported')
if (ws.transaction!==null) {
console.error('Transaction already in progress')
}
else {
await pendOrder(built[0])
co.resetOrders()
nav('Status')
new PlaceOrderTransaction(s.chainId, toRaw(built[0])).submit()
}
}