meow
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 1.5 MiB |
+47
-12
@@ -69,7 +69,13 @@ const missingStaticDataPaths = new Set()
|
||||
const turnstileRequiredEvent = 'tssbot:turnstile-required'
|
||||
|
||||
const BLOCKED_PLAYER_UIDS = new Set(['165569402', '86157459', '33536334', '41808996', '3651161'])
|
||||
const BLOCKED_TEAM_NAMES = new Set(['TPC'])
|
||||
const BLOCKED_TEAM_NAMES = new Set()
|
||||
const TEAM_DISPLAY_NAMES = new Map([
|
||||
['TPC', 'They Prefer Children'],
|
||||
])
|
||||
const TEAM_LOOKUP_NAMES = new Map([
|
||||
['they prefer children', 'TPC'],
|
||||
])
|
||||
const blogPostFiles = import.meta.glob('./blog/posts/*.md', {
|
||||
eager: true,
|
||||
import: 'default',
|
||||
@@ -150,8 +156,14 @@ const publicDataSources = {
|
||||
players: dataSource(apiEndpoints.players, staticDataPath('leaderboard-players.json')),
|
||||
homeTeams: dataSource(apiEndpoints.homeTeams, staticDataPath('home-teams.json')),
|
||||
recentGames: dataSource(apiEndpoints.recentGames, staticDataPath('recent-games.json')),
|
||||
detail: (name) => dataSource(apiEndpoints.detail(name), staticDataPath('teams', `${staticDataKey(name)}.json`)),
|
||||
games: (name) => dataSource(apiEndpoints.games(name), staticDataPath('teams', `${staticDataKey(name)}.games.json`)),
|
||||
detail: (name) => {
|
||||
const lookupName = normalizeTeamLookupName(name)
|
||||
return dataSource(apiEndpoints.detail(lookupName), staticDataPath('teams', `${staticDataKey(lookupName)}.json`))
|
||||
},
|
||||
games: (name) => {
|
||||
const lookupName = normalizeTeamLookupName(name)
|
||||
return dataSource(apiEndpoints.games(lookupName), staticDataPath('teams', `${staticDataKey(lookupName)}.games.json`))
|
||||
},
|
||||
player: (uid) => dataSource(apiEndpoints.player(uid), staticDataPath('players', `${staticDataKey(uid)}.json`)),
|
||||
game: (gameId) => dataSource(apiEndpoints.game(gameId), staticDataPath('games', `${staticDataKey(gameId)}.json`)),
|
||||
gameLogs: (gameId) => dataSource(apiEndpoints.gameLogs(gameId), staticDataPath('games', `${staticDataKey(gameId)}.logs.json`)),
|
||||
@@ -382,7 +394,8 @@ function gameParticipants(game) {
|
||||
}
|
||||
|
||||
function displayTeamName(value) {
|
||||
return String(value || '').trim()
|
||||
const name = String(value || '').trim()
|
||||
return TEAM_DISPLAY_NAMES.get(name) || name
|
||||
}
|
||||
|
||||
function ParticipantNames({ participants, spread = false }) {
|
||||
@@ -428,13 +441,22 @@ function ParticipantNames({ participants, spread = false }) {
|
||||
}
|
||||
|
||||
function bestTeamName(team) {
|
||||
return team?.name || ''
|
||||
return displayTeamName(team?.name)
|
||||
}
|
||||
|
||||
function sourceTeamName(team) {
|
||||
return String(team?.name || '').trim()
|
||||
}
|
||||
|
||||
function searchKey(value) {
|
||||
return String(value || '').trim().toLocaleLowerCase()
|
||||
}
|
||||
|
||||
function normalizeTeamLookupName(value) {
|
||||
const name = String(value || '').trim()
|
||||
return TEAM_LOOKUP_NAMES.get(searchKey(name)) || name
|
||||
}
|
||||
|
||||
function teamSearchResult(team) {
|
||||
const name = bestTeamName(team)
|
||||
return {
|
||||
@@ -489,7 +511,7 @@ function teamDetailLooksReal(detail) {
|
||||
}
|
||||
|
||||
function canonicalTeamName(detail, fallback = '') {
|
||||
return detail?.name || fallback
|
||||
return displayTeamName(detail?.name || fallback)
|
||||
}
|
||||
|
||||
function normalizeAnalyticsPreferences(value) {
|
||||
@@ -2058,7 +2080,7 @@ function AppContent() {
|
||||
return
|
||||
}
|
||||
|
||||
const resolved = await fetchJson(apiEndpoints.resolve(name))
|
||||
const resolved = await fetchJson(apiEndpoints.resolve(normalizeTeamLookupName(name)))
|
||||
const resolvedName = resolved.name
|
||||
if (!resolvedName) throw new Error('Team not found')
|
||||
|
||||
@@ -2696,11 +2718,19 @@ function PlayerStatCard({ label, value }) {
|
||||
)
|
||||
}
|
||||
|
||||
function BlockedPage({ onBack }) {
|
||||
function BlockedPage({ imageAlt = '', imageSrc = '', onBack }) {
|
||||
return (
|
||||
<section className="mx-auto max-w-4xl pb-12 pt-24 sm:pt-28">
|
||||
<div className="mt-8 rounded-xl border border-border bg-fury-white p-10 text-center">
|
||||
{imageSrc ? (
|
||||
<img
|
||||
alt={imageAlt}
|
||||
className="mx-auto max-h-[520px] w-full max-w-2xl rounded-lg object-contain"
|
||||
src={imageSrc}
|
||||
/>
|
||||
) : (
|
||||
<p className="text-7xl">🤡🤡🤡🤡</p>
|
||||
)}
|
||||
<p className="mt-4 text-text-soft">user affiliated with pedophiles, blocked~</p>
|
||||
{onBack ? (
|
||||
<button
|
||||
@@ -2746,7 +2776,11 @@ function PlayerPage({ uid, navigate }) {
|
||||
|
||||
if (status === 'blocked') {
|
||||
return (
|
||||
<BlockedPage onBack={() => navigate('/players')} />
|
||||
<BlockedPage
|
||||
imageAlt="Blocked player"
|
||||
imageSrc="/war-thunder-deviss.gif"
|
||||
onBack={() => navigate('/players')}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -4301,10 +4335,11 @@ function TeamProfilePage({ navigate, profile, requestedTeam, teams }) {
|
||||
const summary = detail?.team_summary || detail?.squadron_summary
|
||||
const players = detail?.players || []
|
||||
const games = profile.games.data?.games || []
|
||||
const leaderboardTeam = teams.find((team) => bestTeamName(team) === requestedTeam)
|
||||
const displayName = detail?.name || bestTeamName(leaderboardTeam) || requestedTeam
|
||||
const lookupTeam = normalizeTeamLookupName(requestedTeam)
|
||||
const leaderboardTeam = teams.find((team) => sourceTeamName(team) === lookupTeam || bestTeamName(team) === requestedTeam)
|
||||
const displayName = canonicalTeamName(detail, bestTeamName(leaderboardTeam) || requestedTeam)
|
||||
|
||||
if (BLOCKED_TEAM_NAMES.has(requestedTeam)) {
|
||||
if (BLOCKED_TEAM_NAMES.has(lookupTeam)) {
|
||||
return (
|
||||
<BlockedPage onBack={() => navigate('/teams')} />
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user