diff --git a/functions/src/on-update-user.ts b/functions/src/on-update-user.ts index b6ba6e0b..0ace3c53 100644 --- a/functions/src/on-update-user.ts +++ b/functions/src/on-update-user.ts @@ -5,6 +5,8 @@ import { HOUSE_LIQUIDITY_PROVIDER_ID } from '../../common/antes' import { createNotification } from './create-notification' import { ReferralTxn } from '../../common/txn' import { Contract } from '../../common/contract' +import { LimitBet } from 'common/bet' +import { QuerySnapshot } from 'firebase-admin/firestore' const firestore = admin.firestore() export const onUpdateUser = functions.firestore @@ -17,6 +19,10 @@ export const onUpdateUser = functions.firestore if (prevUser.referredByUserId !== user.referredByUserId) { await handleUserUpdatedReferral(user, eventId) } + + if (user.balance <= 0) { + await cancelLimitOrders(user.id) + } }) async function handleUserUpdatedReferral(user: User, eventId: string) { @@ -109,3 +115,15 @@ async function handleUserUpdatedReferral(user: User, eventId: string) { ) }) } + +async function cancelLimitOrders(userId: string) { + const snapshot = (await firestore + .collectionGroup('bets') + .where('userId', '==', userId) + .where('isFilled', '==', false) + .get()) as QuerySnapshot + + await Promise.all( + snapshot.docs.map((doc) => doc.ref.update({ isCancelled: true })) + ) +}