Apply M$ limit to FR answer bets

This commit is contained in:
Ian Philips 2022-05-06 16:25:40 -04:00
parent a4216929f6
commit 7fe599c8f9
2 changed files with 13 additions and 2 deletions

View File

@ -13,6 +13,7 @@ import { Answer, MAX_ANSWER_LENGTH } from '../../common/answer'
import { getContract, getValues } from './utils' import { getContract, getValues } from './utils'
import { sendNewAnswerEmail } from './emails' import { sendNewAnswerEmail } from './emails'
import { Bet } from '../../common/bet' import { Bet } from '../../common/bet'
import { getContractBetMetrics } from '../../common/calculate'
export const createAnswer = functions.runWith({ minInstances: 1 }).https.onCall( export const createAnswer = functions.runWith({ minInstances: 1 }).https.onCall(
async ( async (
@ -57,7 +58,7 @@ export const createAnswer = functions.runWith({ minInstances: 1 }).https.onCall(
message: 'Requires a free response contract', message: 'Requires a free response contract',
} }
const { closeTime, volume } = contract const { closeTime, volume, manaLimitPerUser } = contract
if (closeTime && Date.now() > closeTime) if (closeTime && Date.now() > closeTime)
return { status: 'error', message: 'Trading is closed' } return { status: 'error', message: 'Trading is closed' }
@ -66,6 +67,16 @@ export const createAnswer = functions.runWith({ minInstances: 1 }).https.onCall(
) )
const yourBets = yourBetsSnap.docs.map((doc) => doc.data() as Bet) const yourBets = yourBetsSnap.docs.map((doc) => doc.data() as Bet)
const contractMetrics = getContractBetMetrics(contract, yourBets)
const currentInvested = contractMetrics.currentInvested
console.log('user current invested amount', currentInvested)
console.log('mana limit:', manaLimitPerUser)
if (manaLimitPerUser && currentInvested + amount > manaLimitPerUser)
return {
status: 'error',
message: `Market investment limit is M$${manaLimitPerUser}, you've M$${currentInvested} already`,
}
const [lastAnswer] = await getValues<Answer>( const [lastAnswer] = await getValues<Answer>(
firestore firestore
.collection(`contracts/${contractId}/answers`) .collection(`contracts/${contractId}/answers`)

View File

@ -79,7 +79,7 @@ export const placeBet = functions.runWith({ minInstances: 1 }).https.onCall(
const contractMetrics = getContractBetMetrics(contract, yourBets) const contractMetrics = getContractBetMetrics(contract, yourBets)
const currentInvested = contractMetrics.currentInvested const currentInvested = contractMetrics.currentInvested
console.log('yourSharesAmount', contractMetrics.currentInvested) console.log('user current invested amount', currentInvested)
console.log('mana limit:', manaLimitPerUser) console.log('mana limit:', manaLimitPerUser)
if (manaLimitPerUser && currentInvested + amount > manaLimitPerUser) if (manaLimitPerUser && currentInvested + amount > manaLimitPerUser)