* [Leaderboards] Added period toggle for leaderboards * [Leaderboards] TopBettors now calculates by period correctly * [Leaderboard] Use a subcollection for the portfolio caching * [Leaderboard] Switches to a tab view, temporarily hides the missing topBettors periods * [Leaderboard] Reverts random yarn.lock changes * Fix type error from merge * Increase timeout on update metrics * Update firebase rules to allow reading user portfolioHistory Co-authored-by: Pico2x <pico2x@gmail.com>
27 lines
978 B
TypeScript
27 lines
978 B
TypeScript
// For a while, we didn't enforce that display names would be clean in the `updateUserInfo`
|
|
// cloud function, so this script hunts down unclean ones.
|
|
|
|
import * as admin from 'firebase-admin'
|
|
import { initAdmin } from './script-init'
|
|
import { cleanDisplayName } from '../../../common/util/clean-username'
|
|
import { log, writeAsync, UpdateSpec } from '../utils'
|
|
initAdmin()
|
|
const firestore = admin.firestore()
|
|
|
|
if (require.main === module) {
|
|
const usersColl = firestore.collection('users')
|
|
usersColl.get().then(async (userSnaps) => {
|
|
log(`Loaded ${userSnaps.size} users.`)
|
|
const updates = userSnaps.docs.reduce((acc, u) => {
|
|
const name = u.data().name
|
|
if (name != cleanDisplayName(name)) {
|
|
acc.push({ doc: u.ref, fields: { name: cleanDisplayName(name) } })
|
|
}
|
|
return acc
|
|
}, [] as UpdateSpec[])
|
|
log(`Found ${updates.length} users to update:`, updates)
|
|
await writeAsync(firestore, updates)
|
|
log(`Updated all users.`)
|
|
})
|
|
}
|