diff --git a/app/app/src/components/StreamersTable.astro b/app/app/src/components/StreamersTable.astro index 9a57dad..84129f7 100644 --- a/app/app/src/components/StreamersTable.astro +++ b/app/app/src/components/StreamersTable.astro @@ -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 + streamers: Record +} + interface YamlStreamerSocials { name: string @@ -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 +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 + ), + } + } + + return streamersList as YamlStreamerList +} + +const { + streamersListYml = '[]', + showTeams = false, +} = Astro.props +const streamersList = parseStreamerList(streamersListYml) const streamersSocials = YAML.parse(streamersSocialsYml) as Record const socialPlatforms = [ @@ -39,8 +69,8 @@ const socialPlatforms = [ 'links', ] -const streamers: Array = streamersList.map( - (name): StreamerSocials => +const streamers: Array = Object.entries(streamersList.streamers).map( + ([name, data]): StreamerSocials => { const streamer = streamersSocials[name] @@ -56,6 +86,7 @@ const streamers: Array = streamersList.map( return { name: streamer.name, country: streamer.country, + ...(showTeams && { team: data?.team ? streamersList.teams[data.team] : null }), socials: socialPlatforms.reduce( (socials, platform) => { @@ -71,7 +102,7 @@ const streamers: Array = streamersList.map( return socials }, [] as StreamerSocials['socials'], - ) + ), } } ) @@ -83,6 +114,7 @@ const streamers: Array = streamersList.map( Nationalité Participant + {showTeams && Équipe} Réseaux sociaux @@ -94,6 +126,7 @@ const streamers: Array = streamersList.map( {streamer.name} + {showTeams && {streamer.team || '–'}} {streamer.socials.map((social, index) => ( <> diff --git a/app/app/src/content/docs/fluff-event-2025/streamers.mdx b/app/app/src/content/docs/fluff-event-2025/streamers.mdx index 60fe9e2..48c1abe 100644 --- a/app/app/src/content/docs/fluff-event-2025/streamers.mdx +++ b/app/app/src/content/docs/fluff-event-2025/streamers.mdx @@ -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' - + diff --git a/app/app/src/data/streamers/2025.yml b/app/app/src/data/streamers/2025.yml index 0883afe..63b4f88 100644 --- a/app/app/src/data/streamers/2025.yml +++ b/app/app/src/data/streamers/2025.yml @@ -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" }