Add minimum unique bettors for proven correct

This commit is contained in:
Ian Philips 2022-10-06 10:31:09 -04:00
parent 7fa1d14443
commit bc8a3a8e3c
3 changed files with 24 additions and 10 deletions

View File

@ -1,10 +1,5 @@
import { User } from './user'
export type Achievement = {
totalBadges: number
badges: Badge[]
}
export type Badge = {
type: BadgeTypes
createdTime: number
@ -42,6 +37,7 @@ export type ProvenCorrectBadge = Badge & ProvenCorrectBadgeData
export type StreakerBadge = Badge & StreakerBadgeData
export type MarketCreatorBadge = Badge & MarketCreatorBadgeData
export const MINIMUM_UNIQUE_BETTORS_FOR_PROVEN_CORRECT_BADGE = 5
export const provenCorrectRarityThresholds = [1, 1000, 10000]
const calculateProvenCorrectBadgeRarity = (badge: ProvenCorrectBadge) => {
const { betAmount } = badge.data

View File

@ -1,6 +1,6 @@
import { notification_preferences } from './user-notification-preferences'
import { ENV_CONFIG } from './envs/constants'
import { Achievement } from './badge'
import { MarketCreatorBadge, ProvenCorrectBadge, StreakerBadge } from './badge'
export type User = {
id: string
@ -52,9 +52,18 @@ export type User = {
isBannedFromPosting?: boolean
achievements?: {
provenCorrect?: Achievement
marketCreator?: Achievement
streaker?: Achievement
provenCorrect?: {
totalBadges: number
badges: ProvenCorrectBadge[]
}
marketCreator?: {
totalBadges: number
badges: MarketCreatorBadge[]
}
streaker?: {
totalBadges: number
badges: StreakerBadge[]
}
}
}

View File

@ -6,7 +6,10 @@ import { Bet } from '../../common/bet'
import * as admin from 'firebase-admin'
import { ContractComment } from '../../common/comment'
import { scoreCommentorsAndBettors } from '../../common/scoring'
import { ProvenCorrectBadge } from '../../common/badge'
import {
MINIMUM_UNIQUE_BETTORS_FOR_PROVEN_CORRECT_BADGE,
ProvenCorrectBadge,
} from '../../common/badge'
export const onUpdateContract = functions.firestore
.document('contracts/{contractId}')
@ -51,6 +54,12 @@ export const onUpdateContract = functions.firestore
const firestore = admin.firestore()
async function handleResolvedContract(contract: Contract) {
if (
(contract.uniqueBettorCount ?? 0) <
MINIMUM_UNIQUE_BETTORS_FOR_PROVEN_CORRECT_BADGE
)
return
// get all bets on this contract
const bets = await getValues<Bet>(
firestore.collection(`contracts/${contract.id}/bets`)