If a limit bet doesn't match any orders, don't update the contract, don't redeem shares. Perf win!
This commit is contained in:
parent
6e1aa4b0f4
commit
a9018d77c7
|
@ -128,34 +128,38 @@ export const placebet = newEndpoint({}, async (req, auth) => {
|
||||||
updateMakers(makers, betDoc.id, contractDoc, trans)
|
updateMakers(makers, betDoc.id, contractDoc, trans)
|
||||||
}
|
}
|
||||||
|
|
||||||
trans.update(userDoc, { balance: FieldValue.increment(-newBet.amount) })
|
if (newBet.amount !== 0) {
|
||||||
log('Updated user balance.')
|
trans.update(userDoc, { balance: FieldValue.increment(-newBet.amount) })
|
||||||
trans.update(
|
log('Updated user balance.')
|
||||||
contractDoc,
|
|
||||||
removeUndefinedProps({
|
|
||||||
pool: newPool,
|
|
||||||
p: newP,
|
|
||||||
totalShares: newTotalShares,
|
|
||||||
totalBets: newTotalBets,
|
|
||||||
totalLiquidity: newTotalLiquidity,
|
|
||||||
collectedFees: addObjects(newBet.fees, collectedFees),
|
|
||||||
volume: volume + newBet.amount,
|
|
||||||
})
|
|
||||||
)
|
|
||||||
log('Updated contract properties.')
|
|
||||||
|
|
||||||
return { betId: betDoc.id, makers }
|
trans.update(
|
||||||
|
contractDoc,
|
||||||
|
removeUndefinedProps({
|
||||||
|
pool: newPool,
|
||||||
|
p: newP,
|
||||||
|
totalShares: newTotalShares,
|
||||||
|
totalBets: newTotalBets,
|
||||||
|
totalLiquidity: newTotalLiquidity,
|
||||||
|
collectedFees: addObjects(newBet.fees, collectedFees),
|
||||||
|
volume: volume + newBet.amount,
|
||||||
|
})
|
||||||
|
)
|
||||||
|
log('Updated contract properties.')
|
||||||
|
}
|
||||||
|
|
||||||
|
return { betId: betDoc.id, makers, newBet }
|
||||||
})
|
})
|
||||||
|
|
||||||
log('Main transaction finished.')
|
log('Main transaction finished.')
|
||||||
await redeemShares(auth.uid, contractId)
|
|
||||||
|
|
||||||
const userIds = [
|
if (result.newBet.amount !== 0) {
|
||||||
auth.uid,
|
const userIds = [
|
||||||
...(result.makers ?? []).map((maker) => maker.bet.userId),
|
auth.uid,
|
||||||
]
|
...(result.makers ?? []).map((maker) => maker.bet.userId),
|
||||||
await Promise.all(userIds.map((userId) => redeemShares(userId, contractId)))
|
]
|
||||||
log('Share redemption transaction finished.')
|
await Promise.all(userIds.map((userId) => redeemShares(userId, contractId)))
|
||||||
|
log('Share redemption transaction finished.')
|
||||||
|
}
|
||||||
|
|
||||||
return { betId: result.betId }
|
return { betId: result.betId }
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in New Issue
Block a user