diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index 29e5cc7..f7330a4 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -63,6 +63,9 @@ const siteGateEnabled = String(import.meta.env.VITE_SITE_GATE || 'false').toLowe const staticDataBase = (import.meta.env.VITE_STATIC_DATA_BASE || '/data').replace(/\/+$/, '') const staticDataEnabled = String(import.meta.env.VITE_STATIC_DATA || 'false').toLowerCase() === 'true' const missingStaticDataPaths = new Set() + +const BLOCKED_PLAYER_UIDS = new Set(['165569402', '86157459', '33536334', '41808996', '3651161']) +const BLOCKED_TEAM_NAMES = new Set(['TPC']) const blogPostFiles = import.meta.glob('./blog/posts/*.md', { eager: true, import: 'default', @@ -1393,11 +1396,11 @@ function AppContent() { games: { status: 'idle', data: null, error: null }, }) const teams = useMemo( - () => leaderboard.data?.teams || leaderboard.data?.squadrons || [], + () => (leaderboard.data?.teams || leaderboard.data?.squadrons || []).filter((t) => !BLOCKED_TEAM_NAMES.has(bestTeamName(t))), [leaderboard.data], ) const players = useMemo( - () => playerLeaderboard.data?.players || [], + () => (playerLeaderboard.data?.players || []).filter((p) => !BLOCKED_PLAYER_UIDS.has(String(p?.uid || ''))), [playerLeaderboard.data], ) const teamsToWatch = useMemo( @@ -1645,10 +1648,14 @@ function AppContent() { if (controller.signal.aborted) return const teamResults = teamResult.status === 'fulfilled' - ? (teamResult.value.teams || teamResult.value.results || []).map(teamSearchResult) + ? (teamResult.value.teams || teamResult.value.results || []) + .filter((team) => !BLOCKED_TEAM_NAMES.has(bestTeamName(team))) + .map(teamSearchResult) : [] const playerResults = playerResult.status === 'fulfilled' - ? (playerResult.value.players || []).map(playerSearchResult) + ? (playerResult.value.players || []) + .filter((player) => !BLOCKED_PLAYER_UIDS.has(String(player?.uid || ''))) + .map(playerSearchResult) : [] const results = dedupeSearchResults([...teamResults, ...playerResults]).slice(0, 10) @@ -2663,6 +2670,26 @@ function PlayerStatCard({ label, value }) { ) } +function BlockedPage({ onBack }) { + return ( +
+
+

🤡🤡🤡🤡

+

user affiliated with pedophiles, blocked~

+ {onBack ? ( + + ) : null} +
+
+ ) +} + function PlayerPage({ uid, navigate }) { const [state, setState] = useState({ status: 'loading', data: null, error: '' }) @@ -2671,6 +2698,10 @@ function PlayerPage({ uid, navigate }) { setState({ status: 'error', data: null, error: 'No player specified.' }) return } + if (BLOCKED_PLAYER_UIDS.has(String(uid))) { + setState({ status: 'blocked', data: null, error: '' }) + return + } let cancelled = false setState({ status: 'loading', data: null, error: '' }) fetchPublicJson(publicDataSources.player(uid)) @@ -2687,6 +2718,12 @@ function PlayerPage({ uid, navigate }) { const { status, data, error } = state + if (status === 'blocked') { + return ( + navigate('/players')} /> + ) + } + return (
@@ -4241,6 +4278,12 @@ function TeamProfilePage({ navigate, profile, requestedTeam, teams }) { const leaderboardTeam = teams.find((team) => bestTeamName(team) === requestedTeam) const displayName = detail?.name || bestTeamName(leaderboardTeam) || requestedTeam + if (BLOCKED_TEAM_NAMES.has(requestedTeam)) { + return ( + navigate('/teams')} /> + ) + } + return (