From e80d8bf06b3a98cf4fc9555ce4942b96041d9588 Mon Sep 17 00:00:00 2001 From: Guillaume FORTAINE Date: Mon, 14 Nov 2022 01:22:08 +0100 Subject: [PATCH] feat: Add pagination and more button at the bottom --- app/item/[id]/page.js | 19 +++++ app/item/page.js | 19 ----- app/news/[page]/page.js | 22 +++++ app/page.js | 30 ------- components/header.module.css | 12 ++- components/nav.js | 18 ++-- components/nav.module.css | 4 +- components/skeletons.module.css | 1 + components/stories.js | 45 ++++++---- components/stories.module.css | 3 +- components/story.js | 35 ++++---- components/story.module.css | 16 ++++ lib/get-item.js | 36 ++++---- next.config.js | 12 ++- package.json | 3 +- pnpm-lock.yaml | 147 +++++++++++++++----------------- 16 files changed, 228 insertions(+), 194 deletions(-) create mode 100644 app/item/[id]/page.js delete mode 100644 app/item/page.js create mode 100644 app/news/[page]/page.js delete mode 100644 app/page.js diff --git a/app/item/[id]/page.js b/app/item/[id]/page.js new file mode 100644 index 0000000..98901e8 --- /dev/null +++ b/app/item/[id]/page.js @@ -0,0 +1,19 @@ +import { notFound } from 'next/navigation'; +import Item from '../../../components/item'; + +// Utils +import fetchData from '../../../lib/fetch-data'; +import { transform } from '../../../lib/get-item'; + +export default async function ItemPage({ params }) { + const { id } = params; + + if (!id) { + notFound(); + } + + const data = await fetchData(`item/${id}`); + const story = transform(data); + + return ; +} \ No newline at end of file diff --git a/app/item/page.js b/app/item/page.js deleted file mode 100644 index 0954f3b..0000000 --- a/app/item/page.js +++ /dev/null @@ -1,19 +0,0 @@ -import { notFound } from 'next/navigation'; -import Item from '../../components/item'; - -// Utils -import fetchData from '../../lib/fetch-data'; -import { transform } from '../../lib/get-item'; - -export default async function ItemPage({ searchParams }) { - const { id } = searchParams; - if (!id) { - notFound(); - } - - const data = await fetchData(`item/${id}`); - const story = transform(data); - return ; -} - -export const revalidate = 0; \ No newline at end of file diff --git a/app/news/[page]/page.js b/app/news/[page]/page.js new file mode 100644 index 0000000..487a990 --- /dev/null +++ b/app/news/[page]/page.js @@ -0,0 +1,22 @@ +// Server Components +import SystemInfo from '../../../components/server-info' + +// Client Components +import Stories from '../../../components/stories' +import Footer from '../../../components/footer' + +// Utils +import fetchData from '../../../lib/fetch-data' + +export default async function RSCPage({ params }) { + const { page } = params; + const storyIds = await fetchData('topstories') + + return ( + <> + +