This commit is contained in:
James Grugett 2022-10-05 22:54:11 -05:00
parent f001eda823
commit cfc8cdfa1c
2 changed files with 11 additions and 7 deletions

View File

@ -172,6 +172,7 @@ export const computeFills = (
let amount = betAmount
let cpmmState = { pool: state.pool, p: state.p }
let totalFees = noFees
const makerBalanceByUserId = { ...balanceByUserId }
let i = 0
while (true) {
@ -190,10 +191,10 @@ export const computeFills = (
// Matched against bet.
i++
const { userId } = maker.bet
const makerBalance = balanceByUserId[userId]
const makerBalance = makerBalanceByUserId[userId]
if (floatingGreaterEqual(makerBalance, maker.amount)) {
balanceByUserId[userId] = makerBalance - maker.amount
makerBalanceByUserId[userId] = makerBalance - maker.amount
} else {
// Insufficient balance. Cancel maker bet.
ordersToCancel.push(maker.bet)
@ -272,7 +273,7 @@ export const getBinaryBetStats = (
contract: CPMMBinaryContract | PseudoNumericContract,
limitProb: number,
unfilledBets: LimitBet[],
balanceByUserId: { [userId: string]: number },
balanceByUserId: { [userId: string]: number }
) => {
const { newBet } = getBinaryCpmmBetInfo(
outcome,
@ -280,7 +281,7 @@ export const getBinaryBetStats = (
contract,
limitProb,
unfilledBets as LimitBet[],
balanceByUserId,
balanceByUserId
)
const remainingMatched =
((newBet.orderAmount ?? 0) - newBet.amount) /

View File

@ -218,9 +218,12 @@ export const getUnfilledBetsAndUserBalances = async (
// Get balance of all users with open limit orders.
const userIds = uniqBy(unfilledBets, (bet) => bet.userId)
const userDocs = await trans.getAll(
...userIds.map((userId) => firestore.doc(`users/${userId}`))
)
const userDocs =
userIds.length === 0
? []
: await trans.getAll(
...userIds.map((userId) => firestore.doc(`users/${userId}`))
)
const users = filterDefined(userDocs.map((doc) => doc.data() as User))
const balanceByUserId = Object.fromEntries(
users.map((user) => [user.id, user.balance])