modify perp wip

This commit is contained in:
Adrian Brzeziński 2022-12-14 15:20:51 +01:00
parent 55a8604717
commit 82379e8165
1 changed files with 52 additions and 1 deletions

View File

@ -1,6 +1,7 @@
import {
PerpMarket,
PerpOrder,
PerpOrderType,
Serum3Market,
Serum3Side,
} from '@blockworks-foundation/mango-v4'
@ -22,6 +23,7 @@ import { Order } from '@project-serum/serum/lib/market'
import { useWallet } from '@solana/wallet-adapter-react'
import { PublicKey } from '@solana/web3.js'
import mangoStore from '@store/mangoStore'
import Decimal from 'decimal.js'
import { useViewport } from 'hooks/useViewport'
import { useTranslation } from 'next-i18next'
import { ChangeEvent, useCallback, useState } from 'react'
@ -123,6 +125,55 @@ const OpenOrders = () => {
[t]
)
const modifyOrder = useCallback(
async (o: PerpOrder | Order) => {
const client = mangoStore.getState().client
const group = mangoStore.getState().group
const mangoAccount = mangoStore.getState().mangoAccount.current
const selectedMarket = mangoStore.getState().selectedMarket.current
const actions = mangoStore.getState().actions
const baseSize = new Decimal(modifiedOrderSize).toNumber()
const price = new Decimal(modifiedOrderPrice).toNumber()
if (!group || !mangoAccount) return
setCancelId(o.orderId.toString())
try {
if (selectedMarket instanceof PerpMarket && o instanceof PerpOrder) {
const tx = await client.modifyPerpOrder(
group,
mangoAccount,
o.perpMarketIndex,
o.orderId,
o.side,
price,
Math.abs(baseSize),
undefined, // maxQuoteQuantity
Date.now(),
PerpOrderType.limit,
undefined,
undefined
)
actions.fetchOpenOrders()
notify({
type: 'success',
title: 'Transaction successful',
txid: tx,
})
}
} catch (e: any) {
console.error('Error canceling', e)
notify({
title: t('trade:cancel-order-error'),
description: e.message,
txid: e.txid,
type: 'error',
})
} finally {
setCancelId('')
}
},
[t]
)
const showEditOrderForm = (order: Order | PerpOrder) => {
setModifyOrderId(order.orderId.toString())
setModifiedOrderSize(order.size.toString())
@ -264,7 +315,7 @@ const OpenOrders = () => {
) : (
<>
<IconButton
onClick={() => console.log('save')}
onClick={() => modifyOrder(o)}
size="small"
>
<CheckIcon className="h-4 w-4" />