Up streak reward, fix timing logic

This commit is contained in:
Ian Philips 2022-08-19 10:53:50 -06:00
parent 83a963ec6e
commit 7e7b316900
4 changed files with 13 additions and 21 deletions

View File

@ -4,5 +4,5 @@ export const NUMERIC_FIXED_VAR = 0.005
export const NUMERIC_GRAPH_COLOR = '#5fa5f9' export const NUMERIC_GRAPH_COLOR = '#5fa5f9'
export const NUMERIC_TEXT_COLOR = 'text-blue-500' export const NUMERIC_TEXT_COLOR = 'text-blue-500'
export const UNIQUE_BETTOR_BONUS_AMOUNT = 10 export const UNIQUE_BETTOR_BONUS_AMOUNT = 10
export const BETTING_STREAK_BONUS_AMOUNT = 1 export const BETTING_STREAK_BONUS_AMOUNT = 5
export const BETTING_STREAK_RESET_HOUR = 9 export const BETTING_STREAK_RESET_HOUR = 9

View File

@ -23,7 +23,6 @@ import {
} from '../../common/antes' } from '../../common/antes'
import { APIError } from '../../common/api' import { APIError } from '../../common/api'
import { User } from '../../common/user' import { User } from '../../common/user'
import { DAY_MS } from 'common/lib/util/time'
const firestore = admin.firestore() const firestore = admin.firestore()
const BONUS_START_DATE = new Date('2022-07-13T15:30:00.000Z').getTime() const BONUS_START_DATE = new Date('2022-07-13T15:30:00.000Z').getTime()
@ -71,11 +70,14 @@ const updateBettingStreak = async (
contract: Contract, contract: Contract,
eventId: string eventId: string
) => { ) => {
const betStreakResetTime = getPreviousBettingStreakResetTime() const betStreakResetTime = getTodaysBettingStreakResetTime()
// If they've already bet after the reset time, they've already gotten their streak bonus const lastBetTime = user?.lastBetTime ?? 0
if (user.lastBetTime ?? 0 > betStreakResetTime) return
const newBettingStreak = (user.currentBettingStreak ?? 0) + 1 // If they've already bet after the reset time, or if we haven't hit the reset time yet
if (lastBetTime > betStreakResetTime || bet.createdTime < betStreakResetTime)
return
const newBettingStreak = (user?.currentBettingStreak ?? 0) + 1
// Otherwise, add 1 to their betting streak // Otherwise, add 1 to their betting streak
await firestore.collection('users').doc(user.id).update({ await firestore.collection('users').doc(user.id).update({
currentBettingStreak: newBettingStreak, currentBettingStreak: newBettingStreak,
@ -246,16 +248,6 @@ const notifyFills = async (
) )
} }
const getPreviousBettingStreakResetTime = () => { const getTodaysBettingStreakResetTime = () => {
const today = Date.now() return new Date().setUTCHours(BETTING_STREAK_RESET_HOUR, 0, 0, 0)
let betStreakResetTime = new Date().setUTCHours(
BETTING_STREAK_RESET_HOUR,
0,
0,
0
)
if (today < betStreakResetTime) {
betStreakResetTime = betStreakResetTime - DAY_MS
}
return betStreakResetTime
} }

View File

@ -130,7 +130,7 @@ export function UserPage(props: { user: User }) {
</Col> </Col>
<Col className={'justify-center gap-4'}> <Col className={'justify-center gap-4'}>
<Row> <Row>
<Col className={'w-20 items-center text-gray-500'}> <Col className={'items-center text-gray-500'}>
<span <span
className={clsx( className={clsx(
'text-md', 'text-md',
@ -142,7 +142,7 @@ export function UserPage(props: { user: User }) {
<span>profit</span> <span>profit</span>
</Col> </Col>
<Col <Col
className={'w-20 cursor-pointer items-center text-gray-500'} className={'cursor-pointer items-center text-gray-500'}
onClick={() => setShowBettingStreakModal(true)} onClick={() => setShowBettingStreakModal(true)}
> >
<span>🔥{user.currentBettingStreak ?? 0}</span> <span>🔥{user.currentBettingStreak ?? 0}</span>

View File

@ -388,7 +388,7 @@ function IncomeNotificationItem(props: {
} else if (sourceType === 'betting_streak_bonus' && sourceText) { } else if (sourceType === 'betting_streak_bonus' && sourceText) {
reasonText = `for your ${ reasonText = `for your ${
parseInt(sourceText) / BETTING_STREAK_BONUS_AMOUNT parseInt(sourceText) / BETTING_STREAK_BONUS_AMOUNT
} day` }-day`
} }
return ( return (
<> <>