diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-04-14 03:13:02 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-04-14 03:13:02 -0700 |
| commit | 073fc8fe92e60fd4662580e8216600379a0edfae (patch) | |
| tree | 4a78d028fd78af8d30584df24bbfc164e1de9896 | |
| parent | 7b93b8587d93d8f86ac8d8e25c589bba02c20476 (diff) | |
chore: refactor id to game title conversion to shared module
| -rw-r--r-- | site/src/components/NewsFeed.tsx | 20 | ||||
| -rw-r--r-- | site/src/pages/Homepage.tsx | 35 | ||||
| -rw-r--r-- | site/src/utils.ts | 10 |
3 files changed, 17 insertions, 48 deletions
diff --git a/site/src/components/NewsFeed.tsx b/site/src/components/NewsFeed.tsx index 99099be..311fe75 100644 --- a/site/src/components/NewsFeed.tsx +++ b/site/src/components/NewsFeed.tsx @@ -1,3 +1,4 @@ +import { getGameTitle } from "../utils.ts"; export interface NewsData { date: string; @@ -31,7 +32,7 @@ export const NewsFeed: React.FC<NewsFeedProps> = ({ newsItems }) => { return ( <div - key={news.identifier + "-" + news.timestamp} + key={news.identifier + "-" + news.timestamp + "-" + news.content} className="bg-gray-900 border border-gray-800 rounded-lg shadow-lg overflow-hidden" > {/* Header (Game Icon + Info) */} @@ -44,7 +45,7 @@ export const NewsFeed: React.FC<NewsFeedProps> = ({ newsItems }) => { <div className="flex flex-col leading-tight"> <span className="text-sm font-semibold text-gray-200"> - {getGameName(news.identifier)} + {getGameTitle(news.identifier)} </span> <span className="text-xs text-gray-400"> {formattedDate} @@ -122,18 +123,3 @@ export const NewsFeed: React.FC<NewsFeedProps> = ({ newsItems }) => { </div> ); }; -function getGameName(identifier: string): string | null { - if(identifier.startsWith("SOUND_VOLTEX")){ - return "SOUND VOLTEX"; - } - else if(identifier.startsWith("IIDX")){ - return "beatmania IIDX"; - } - else if(identifier.startsWith("CHUNITHM_JP")){ - return "CHUNITHM (JAPAN)"; - } - else if(identifier.startsWith("MAIMAIDX_JP")){ - return "maimai DX (JAPAN)" - } - return null; -} diff --git a/site/src/pages/Homepage.tsx b/site/src/pages/Homepage.tsx index 6f53096..0e17a43 100644 --- a/site/src/pages/Homepage.tsx +++ b/site/src/pages/Homepage.tsx @@ -1,6 +1,7 @@ import { useEffect, useState } from "react"; import { NewsData, NewsFeed } from "../components/NewsFeed"; import { useParams } from "react-router-dom"; +import { getGameTitle } from "../utils.ts"; import TitleBar from "../components/TitleBar"; interface ArcadeNewsAPIData { @@ -16,23 +17,7 @@ export default function Home() { useEffect(() => { const fetchNews = async () => { setLoading(true); - let jsonFile = "news.json"; - if (gameId) { - switch(gameId) { - case "sdvx": - jsonFile = "sdvx_news.json"; - break; - case "iidx": - jsonFile = "iidx_news.json"; - break; - case "chunithm_jp": - jsonFile = "chunithm_jp_news.json"; - break; - default: - jsonFile = "news.json"; - } - } - + const jsonFile = gameId ? `${gameId}_news.json` : "news.json"; try { const response = await fetch("https://arcade-news.pinapelz.com/"+`${jsonFile}`); if (!response.ok) { @@ -60,18 +45,6 @@ export default function Home() { ); } - // Game-specific title mapping - const getGameTitle = () => { - if (!gameId) return null; - - switch(gameId) { - case "sdvx": return "SOUND VOLTEX"; - case "iidx": return "beatmania IIDX"; - case "chunithm_jp": return "CHUNITHM (JAPAN)"; - default: return gameId.toUpperCase(); - } - }; - return ( <> <TitleBar /> @@ -79,7 +52,7 @@ export default function Home() { <div className="max-w-[600px] mx-auto px-4"> {gameId && ( <h1 className="text-2xl font-bold text-center text-white mb-6"> - {getGameTitle()} News + {getGameTitle(gameId)} News </h1> )} <NewsFeed newsItems={newsFeedData.news_posts} /> @@ -87,4 +60,4 @@ export default function Home() { </div> </> ); -}
\ No newline at end of file +} diff --git a/site/src/utils.ts b/site/src/utils.ts new file mode 100644 index 0000000..e523f5c --- /dev/null +++ b/site/src/utils.ts @@ -0,0 +1,10 @@ +export const getGameTitle = (gameId: string) => { + if (!gameId) return null; + + if (gameId.startsWith("sdvx")) return "SOUND VOLTEX"; + if (gameId.startsWith("iidx")) return "beatmania IIDX"; + if (gameId.startsWith("chunithm_jp")) return "CHUNITHM (JAPAN)"; + if (gameId.startsWith("maimaidx_jp")) return "maimai DX (JAPAN)"; + + return gameId.toUpperCase(); +}; |
