diff --git a/order.js b/order.js index 7567369..7d0c7e9 100644 --- a/order.js +++ b/order.js @@ -10,6 +10,7 @@ export function sendVaultOrders( socket, chainId, vault ) { ]).then(async (got)=>{ const [openIndexes, closedIndexes, recents] = got const statuses = {} + // noinspection JSCheckFunctionSignatures const indexes = [...JSON.parse(openIndexes), ...JSON.parse(closedIndexes)] const proms = [] if( openIndexes !== null ) { @@ -55,10 +56,10 @@ export async function orderStatus( chainId, vault, orderIndex ) { return status } -async function fillOrderStatus( chainId, orderKey, status ) { +async function fillOrderStatus(chainId, orderKey, status ) { const fills = await orderFilled.get(chainId, orderKey) if (fills !== null) - applyFills(status, JSON.parse(fills)) + applyFillsServer(status, JSON.parse(fills)) } export async function archivedOrders(chainId, vault, limit=100 ) { @@ -79,23 +80,43 @@ export async function archivedOrders(chainId, vault, limit=100 ) { return result } -function applyFills( orderStatus, filled ) { - // console.log('apply fills OrderStatus', orderStatus) - // console.log('apply fills filled', filled) - const [[orderFilledIn, orderFilledOut], trancheFills] = filled - orderStatus[7] = orderFilledIn - orderStatus[8] = orderFilledOut - for( const i in trancheFills ) { - const [filledIn, filledOut] = trancheFills[i] - // class ElaboratedTrancheStatus: - // filledIn: int - // filledOut: int - // activationTime: int - // startTime: int - // endTime: int +export function applyFillsServer(orderStatus, orderFills) { + // class ElaboratedTrancheStatus: + // filledIn: int + // filledOut: int + // activationTime: int + // startTime: int + // endTime: int + // fills: list[Fill] + // + // class Fill: + // tx: str + // time: int + // filledIn: int + // filledOut: int + // fee: int - orderStatus[9][i][0] = filledIn - orderStatus[9][i][1] = filledOut + // console.log('apply fills OrderStatus', orderStatus) + // console.log('apply fills orderFills', orderFills) + const trancheStatus = orderStatus[9] + let orderIn = 0n + let orderOut = 0n + for (const i in orderFills) { + let filledIn = 0n + let filledOut = 0n + const [activationTime, fills] = orderFills[i]; + for (const fill of fills) { + filledIn += BigInt(fill[2]) + filledOut += BigInt(fill[3]) + } + const old = trancheStatus[i] + const startTime = old[3] + const endTime = old[4] + trancheStatus[i] = [filledIn.toString(), filledOut.toString(), activationTime, startTime, endTime, fills] + orderIn += filledIn + orderOut += filledOut } - // console.log('applied fills', orderStatus) + orderStatus[7] = orderIn.toString() + orderStatus[8] = orderOut.toString() + // console.log('apply fills final', orderStatus, orderStatus[1][8]) }