From dd12d5f1c6819e121fe9415e76485f453144cc88 Mon Sep 17 00:00:00 2001 From: ryanmio Date: Sun, 24 Dec 2023 12:00:04 -0500 Subject: [PATCH 1/3] Refactor layout structure and implement metadata for SEO Refactored the layout structure by moving it to the app directory and created a new server-side rendering file in the app directory. This aligns with the Next.js 13+ structure and allows for better separation of client and server components. Also implemented metadata for SEO using Next.js's new metadata feature, improving the website's search engine optimization and shareability. --- app/layout.js | 26 ++++++++++++++++++++++++++ app/ssr.js | 6 ++++++ components/layout.js | 14 -------------- pages/history/[userId].js | 2 +- pages/results.js | 2 +- 5 files changed, 34 insertions(+), 16 deletions(-) create mode 100644 app/layout.js create mode 100644 app/ssr.js delete mode 100644 components/layout.js diff --git a/app/layout.js b/app/layout.js new file mode 100644 index 0000000..2cdc746 --- /dev/null +++ b/app/layout.js @@ -0,0 +1,26 @@ +// app/layout.js +'use client' +import '/style.css'; +import '/tailwind.css'; +import { NextUIProvider } from "@nextui-org/react"; +import PropTypes from 'prop-types' + +function ClientComponent({ children }) { + return ( + + {children} + + ) +} + +export default function RootLayout({ children }) { + return ( + + {children} + + ) +} + +RootLayout.propTypes = { + children: PropTypes.node.isRequired, +} \ No newline at end of file diff --git a/app/ssr.js b/app/ssr.js new file mode 100644 index 0000000..db219e3 --- /dev/null +++ b/app/ssr.js @@ -0,0 +1,6 @@ +// app/ssr.js +export const metadata = { + title: 'My Page Title', + description: 'My Page Description', + // other metadata as needed +}; \ No newline at end of file diff --git a/components/layout.js b/components/layout.js deleted file mode 100644 index 0f757c8..0000000 --- a/components/layout.js +++ /dev/null @@ -1,14 +0,0 @@ -// layout.js -import PropTypes from 'prop-types' - -export default function RootLayout({ children }) { - return ( -
- {children} -
- ) -} - -RootLayout.propTypes = { - children: PropTypes.node.isRequired, -} diff --git a/pages/history/[userId].js b/pages/history/[userId].js index 3d20f6b..4c62c88 100644 --- a/pages/history/[userId].js +++ b/pages/history/[userId].js @@ -4,7 +4,7 @@ import { useRouter } from 'next/router'; import { doc, getDoc, collection, getDocs, query, orderBy } from 'firebase/firestore'; import { getFirebaseFirestore } from '../../app/src/firebase'; import GameHistory from '../../components/GameHistory'; -import RootLayout from '../../components/layout'; +import RootLayout from '../../app/layout'; import NavigationButtons from '../../components/NavigationButtons'; import { format } from 'date-fns'; import { Pagination } from '@nextui-org/react'; diff --git a/pages/results.js b/pages/results.js index 7bc5b55..9fa315e 100644 --- a/pages/results.js +++ b/pages/results.js @@ -4,7 +4,7 @@ import { db } from '../firebaseAdmin'; import ChallengeSection from '../components/ChallengeSection'; import GameHistory from '../components/GameHistory'; import FinalScore from '../components/FinalScore'; -import RootLayout from '../components/layout'; +import RootLayout from '../app/layout'; const ResultsPage = ({ gameData, gameHistory }) => { const metadata = { From aab3342eb7756cbb88b2e2e5191c5406de9c988d Mon Sep 17 00:00:00 2001 From: ryanmio Date: Sun, 24 Dec 2023 12:15:46 -0500 Subject: [PATCH 2/3] Update results.js --- pages/results.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/pages/results.js b/pages/results.js index 9fa315e..7f74fe0 100644 --- a/pages/results.js +++ b/pages/results.js @@ -1,5 +1,6 @@ // pages/results.js import React from 'react'; +import Head from 'next/head'; import { db } from '../firebaseAdmin'; import ChallengeSection from '../components/ChallengeSection'; import GameHistory from '../components/GameHistory'; @@ -7,15 +8,16 @@ import FinalScore from '../components/FinalScore'; import RootLayout from '../app/layout'; const ResultsPage = ({ gameData, gameHistory }) => { - const metadata = { - title: `Game Results for ${gameData?.leaderboardName}`, - description: `Check out the game results for ${gameData?.leaderboardName} on DecodeMe!`, - image: '/images/shareimage.jpeg', - url: `https://deocdeme.app/results/${gameData?.id}`, - }; - return ( - + + + {`Game Results for ${gameData?.leaderboardName}`} + + + + + +
From b8db0e5b13cc08b21784fbf564bfe476a12047ef Mon Sep 17 00:00:00 2001 From: ryanmio Date: Sun, 24 Dec 2023 12:22:51 -0500 Subject: [PATCH 3/3] Update results.js --- pages/results.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/pages/results.js b/pages/results.js index 7f74fe0..b28f12e 100644 --- a/pages/results.js +++ b/pages/results.js @@ -8,15 +8,20 @@ import FinalScore from '../components/FinalScore'; import RootLayout from '../app/layout'; const ResultsPage = ({ gameData, gameHistory }) => { + if (!gameData) { + // Render a loading state or return null if the server-side props are not available + return null; + } + return ( - {`Game Results for ${gameData?.leaderboardName}`} - - - + {`Game Results for ${gameData.leaderboardName}`} + + + - +