manifold/functions/src/scripts/clean-display-names.ts
James Grugett 8b1d132e17
Daily/Weekly/Monthly Leaderboards by Fede (#557)
* [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>
2022-06-22 15:29:40 -05:00

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.`)
})
}