From 012fe204dd31416752d3d3a61adf90c90ac40ed5 Mon Sep 17 00:00:00 2001 From: mattk Date: Tue, 6 Aug 2024 11:42:31 -0400 Subject: [PATCH] refactor to build api at compile time --- app/page.tsx | 24 +++++++++++------------- lib/getRogueApps.ts | 5 ++--- 2 files changed, 13 insertions(+), 16 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index 47e6e50..f8ce323 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1,24 +1,22 @@ -"use client"; - import { useState, useEffect } from 'react'; import { RogueApp } from '../lib/types'; import styles from '../styles/Home.module.css'; import Callout from './components/Callout'; +import { getRogueApps } from '../lib/getRogueApps'; -export default function Home() { - const [rogueApps, setRogueApps] = useState([]); +export async function getStaticProps() { + const rogueApps = getRogueApps(); + return { + props: { + rogueApps, + }, + }; +} + +export default function Home({ rogueApps }: { rogueApps: RogueApp[] }) { const [searchTerm, setSearchTerm] = useState(''); const [expandedCard, setExpandedCard] = useState(null); - useEffect(() => { - async function fetchRogueApps() { - const res = await fetch('/api/rogueapps'); - const data: RogueApp[] = await res.json(); - setRogueApps(data); - } - fetchRogueApps(); - }, []); - const filteredApps = rogueApps.filter(app => app.name.toLowerCase().includes(searchTerm.toLowerCase()) || app.description.toLowerCase().includes(searchTerm.toLowerCase()) || diff --git a/lib/getRogueApps.ts b/lib/getRogueApps.ts index a1701cf..18441e3 100644 --- a/lib/getRogueApps.ts +++ b/lib/getRogueApps.ts @@ -1,10 +1,9 @@ import fs from 'fs'; import path from 'path'; -import { RogueApp } from './types'; -export async function getRogueApps(): Promise { +export function getRogueApps() { const filePath = path.join(process.cwd(), 'public', 'rogueapps.json'); const jsonData = fs.readFileSync(filePath, 'utf8'); - const rogueApps: RogueApp[] = JSON.parse(jsonData); + const rogueApps = JSON.parse(jsonData); return rogueApps; } \ No newline at end of file