Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 38 additions & 5 deletions app/app/src/components/StreamersTable.astro
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,14 @@ import CountryFlag from '~/components/CountryFlag.astro'
import SocialPlatformIcon from '~/components/SocialPlatformIcon.astro'
import streamersSocialsYml from '~/data/streamers/socials.yml?raw'

interface YamlStreamerList
{
teams: Record<string, string>
streamers: Record<string, {
team: string
} | null>
}

interface YamlStreamerSocials
{
name: string
Expand All @@ -19,14 +27,36 @@ interface StreamerSocials
{
name: string
country: string
team?: string | null
socials: Array<{
platform: string
url: string
}>
}

const { streamersListYml = '[]' } = Astro.props
const streamersList = YAML.parse(streamersListYml) as Array<string>
function parseStreamerList(streamersListYml: string): YamlStreamerList
{
const streamersList = YAML.parse(streamersListYml)

if (Array.isArray(streamersList))
{
return {
teams: {},
streamers: streamersList.reduce(
(acc, name) => ({ ...acc, [name]: null }),
{} as Record<string, { team: string } | null>
),
}
}

return streamersList as YamlStreamerList
}

const {
streamersListYml = '[]',
showTeams = false,
} = Astro.props
const streamersList = parseStreamerList(streamersListYml)
const streamersSocials = YAML.parse(streamersSocialsYml) as Record<string, YamlStreamerSocials>

const socialPlatforms = [
Expand All @@ -39,8 +69,8 @@ const socialPlatforms = [
'links',
]

const streamers: Array<StreamerSocials> = streamersList.map(
(name): StreamerSocials =>
const streamers: Array<StreamerSocials> = Object.entries(streamersList.streamers).map(
([name, data]): StreamerSocials =>
{
const streamer = streamersSocials[name]

Expand All @@ -56,6 +86,7 @@ const streamers: Array<StreamerSocials> = streamersList.map(
return {
name: streamer.name,
country: streamer.country,
...(showTeams && { team: data?.team ? streamersList.teams[data.team] : null }),
socials: socialPlatforms.reduce(
(socials, platform) =>
{
Expand All @@ -71,7 +102,7 @@ const streamers: Array<StreamerSocials> = streamersList.map(
return socials
},
[] as StreamerSocials['socials'],
)
),
}
}
)
Expand All @@ -83,6 +114,7 @@ const streamers: Array<StreamerSocials> = streamersList.map(
<tr>
<th><span class="sr-only">Nationalité</span></th>
<th>Participant</th>
{showTeams && <th>Équipe</th>}
<th>Réseaux sociaux</th>
</tr>
</thead>
Expand All @@ -94,6 +126,7 @@ const streamers: Array<StreamerSocials> = streamersList.map(
<CountryFlag country={streamer.country} />
</td>
<td>{streamer.name}</td>
{showTeams && <td>{streamer.team || '–'}</td>}
<td>
{streamer.socials.map((social, index) => (
<>
Expand Down
2 changes: 1 addition & 1 deletion app/app/src/content/docs/fluff-event-2025/streamers.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ streaming et la collecte de fonds pour l'association **En Avant Toute(s)**.
import StreamersTable from '~/components/StreamersTable.astro'
import streamersListYml from '~/data/streamers/2025.yml?raw'

<StreamersTable streamersListYml={streamersListYml} />
<StreamersTable streamersListYml={streamersListYml} showTeams={true} />
107 changes: 56 additions & 51 deletions app/app/src/data/streamers/2025.yml
Original file line number Diff line number Diff line change
@@ -1,51 +1,56 @@
- amiliavt
- atomicbraven
- azeleneuf
- baphostv
- blakeprod
- blaqkcat
- dodgerakame
- drakelelionblanc
- elzbietatv
- emarcanine
- endoku_chan
- esliane
- extranumby
- fluffy
- foxyareku
- furo
- hildamist
- ikutokami
- keola
- kokore
- lechatoo
- luiroi
- lutzthakitten
- malidoudou
- manaryuujin
- masakifujiwara
- mommysillica
- narcos_furry
- nia_c
- nisumi
- peachypiwie
- perceval_robin
- pheden
- plivecrocodile
- pocat
- ponokichan
- ryuuna_vt
- shalinka
- shiholitchi
- sol_hms
- spaceyeen
- spica_stellaris
- stanrenart
- sumashu
- takudev
- the_skinwalkers
- the_turboyoyo
- umbreonoctie
- volpoune
- yhusky_kun
- yuiicky
teams:
knights: ⚔️ Knights
magicians: 🪄 Magicians

streamers:
amiliavt: { "team": "knights" }
atomicbraven: { "team": "knights" }
azeleneuf: { "team": "knights" }
baphostv: { "team": "magicians" }
blakeprod: { "team": "knights" }
blaqkcat: { "team": null }
dodgerakame: { "team": "knights" }
drakelelionblanc: { "team": "magicians" }
elzbietatv: { "team": "knights" }
emarcanine: { "team": "knights" }
endoku_chan: { "team": "magicians" }
esliane: { "team": "knights" }
extranumby: { "team": "magicians" }
fluffy: { "team": "magicians" }
foxyareku: { "team": null }
furo: { "team": "magicians" }
hildamist: { "team": "knights" }
ikutokami: { "team": "knights" }
keola: { "team": "knights" }
kokore: { "team": "magicians" }
lechatoo: { "team": "knights" }
luiroi: { "team": "knights" }
lutzthakitten: { "team": "magicians" }
malidoudou: { "team": "knights" }
manaryuujin: { "team": "magicians" }
masakifujiwara: { "team": "knights" }
mommysillica: { "team": "magicians" }
narcos_furry: { "team": "knights" }
nia_c: { "team": "knights" }
nisumi: { "team": "knights" }
peachypiwie: { "team": "magicians" }
perceval_robin: { "team": "knights" }
pheden: { "team": "knights" }
plivecrocodile: { "team": "magicians" }
pocat: { "team": null }
ponokichan: { "team": "magicians" }
ryuuna_vt: { "team": "magicians" }
shalinka: { "team": "knights" }
shiholitchi: { "team": "magicians" }
sol_hms: { "team": "magicians" }
spaceyeen: { "team": null }
spica_stellaris: { "team": "magicians" }
stanrenart: { "team": "knights" }
sumashu: { "team": "magicians" }
takudev: { "team": "knights" }
the_skinwalkers: { "team": "magicians" }
the_turboyoyo: { "team": "magicians" }
umbreonoctie: { "team": "magicians" }
volpoune: { "team": "magicians" }
yhusky_kun: { "team": "knights" }
yuiicky: { "team": "magicians" }