Compare commits

...

4 Commits

8 changed files with 18 additions and 40 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 203 KiB

View File

@ -1,6 +1,5 @@
import { NextResponse } from "next/server"; import { NextResponse } from "next/server";
import RSS from "rss"; import RSS from "rss";
import { subDays } from "date-fns";
import { fetchChaptersRSS } from "@/lib/api"; import { fetchChaptersRSS } from "@/lib/api";
import { Chapter } from "@/lib/types"; import { Chapter } from "@/lib/types";

View File

@ -2,9 +2,13 @@ import React from "react";
import NavigationButtons from "@/components/NavigationButtons"; import NavigationButtons from "@/components/NavigationButtons";
import { Book, Chapter } from "@/lib/types"; import { Book, Chapter } from "@/lib/types";
import { fetchBookById } from "@/lib/api"; import { fetchBookById } from "@/lib/api";
import Head from "next/head";
export type paramsType = Promise<{ bookId: string; chapterId: string }>; export type paramsType = Promise<{ bookId: string; chapterId: string }>;
export const metadata = {
title: 'Null Translation Group',
description: 'This is the chapter page default description',
};
// Dynamic page component // Dynamic page component
export default async function ChapterPage(props: { params: paramsType}) { export default async function ChapterPage(props: { params: paramsType}) {
const { bookId, chapterId } = await props.params; const { bookId, chapterId } = await props.params;
@ -15,17 +19,12 @@ export default async function ChapterPage(props: { params: paramsType}) {
} }
catch (error) { catch (error) {
console.error(error); console.error(error);
return ( return (
<>
<Head>
<title>Chapter not found</title>
<meta name="description" content="Chapter not found" />
</Head>
<div className="prose dark:prose-invert mx-auto p-6 bg-white dark:bg-gray-800 shadow-md rounded-lg mt-4"> <div className="prose dark:prose-invert mx-auto p-6 bg-white dark:bg-gray-800 shadow-md rounded-lg mt-4">
<div dangerouslySetInnerHTML={{ __html: '<center><h1> Chapter not found !</h1></center>' }}></div> <div dangerouslySetInnerHTML={{ __html: '<center><h1> Chapter not found !</h1></center>' }}></div>
<NavigationButtons bookId={bookId} documentId={chapterId} prevChapter={""} nextChapter={""} /> <NavigationButtons bookId={bookId} documentId={chapterId} prevChapter={""} nextChapter={""} />
</div> </div>
</>
) )
} }
@ -37,31 +36,19 @@ export default async function ChapterPage(props: { params: paramsType}) {
if(current_chapter === null){ if(current_chapter === null){
return ( return (
<>
<Head>
<title>Chapter not found</title>
<meta name="description" content="Chapter not found" />
</Head>
<div className="prose dark:prose-invert mx-auto p-6 bg-white dark:bg-gray-800 shadow-md rounded-lg mt-4"> <div className="prose dark:prose-invert mx-auto p-6 bg-white dark:bg-gray-800 shadow-md rounded-lg mt-4">
<div dangerouslySetInnerHTML={{ __html: '<center><h1> Chapter not found !</h1></center>' }}></div> <div dangerouslySetInnerHTML={{ __html: '<center><h1> Chapter not found !</h1></center>' }}></div>
<NavigationButtons bookId={bookId} documentId={chapterId} prevChapter={""} nextChapter={""} /> <NavigationButtons bookId={bookId} documentId={chapterId} prevChapter={""} nextChapter={""} />
</div> </div>
</>
) )
} }
return ( return (
<>
<Head>
<title>{book.title} - Chapter {current_chapter?.number}</title>
<meta name="description" content={book.description} />
</Head>
<div className="prose dark:prose-invert mx-auto p-6 bg-white dark:bg-gray-800 shadow-md rounded-lg mt-4"> <div className="prose dark:prose-invert mx-auto p-6 bg-white dark:bg-gray-800 shadow-md rounded-lg mt-4">
<NavigationButtons bookId={bookId} documentId={chapterId} prevChapter={prev_chapter} nextChapter={next_chapter} /> <NavigationButtons bookId={bookId} documentId={chapterId} prevChapter={prev_chapter} nextChapter={next_chapter} />
<div className="pt-4" dangerouslySetInnerHTML={{ __html: current_chapter.content }}></div> <div className="pt-4" dangerouslySetInnerHTML={{ __html: current_chapter.content }}></div>
<NavigationButtons bookId={bookId} documentId={chapterId} prevChapter={prev_chapter} nextChapter={next_chapter}/> <NavigationButtons bookId={bookId} documentId={chapterId} prevChapter={prev_chapter} nextChapter={next_chapter}/>
</div> </div>
</>
); );
} }

View File

@ -3,14 +3,16 @@ import { Book } from "@/lib/types";
import { formatDateToMonthDayYear } from "@/lib/utils"; import { formatDateToMonthDayYear } from "@/lib/utils";
import ChapterDropdown from "@/components/ChapterDropdown"; import ChapterDropdown from "@/components/ChapterDropdown";
import { Ad } from "@/lib/types"; import { Ad } from "@/lib/types";
import Head from "next/head";
export type paramsType = Promise<{ bookId: string}>; export type paramsType = Promise<{ bookId: string}>;
export const metadata = {
title: 'Null Translation Group',
description: 'Null Translatin Group book',
};
export default async function BookPage(props: { params: paramsType }) { export default async function BookPage(props: { params: paramsType }) {
const { bookId } = await props.params; const { bookId } = await props.params;
let book: Book; let book: Book;
try { try {
book = await fetchBookById(bookId); book = await fetchBookById(bookId);
@ -26,12 +28,8 @@ export default async function BookPage(props: { params: paramsType }) {
const { title, author, description, chapters, cover } = book; const { title, author, description, chapters, cover } = book;
const cover_media = cover?.at(0); const cover_media = cover?.at(0);
const recentChapters = chapters.length > 6 ? chapters.slice(chapters.length - 6, chapters.length) : chapters; const recentChapters = chapters.length > 6 ? chapters.slice(chapters.length - 6, chapters.length) : chapters;
return ( return (
<>
<Head>
<title>{title}</title>
<meta name="description" content={description} />
</Head>
<div className="max-w-6xl mx-auto py-10 px-4"> <div className="max-w-6xl mx-auto py-10 px-4">
<div className="flex flex-col items-center justify-center"> <div className="flex flex-col items-center justify-center">
<img src={`${process.env.NEXT_PUBLIC_API_URL}${cover_media?.url}`} <img src={`${process.env.NEXT_PUBLIC_API_URL}${cover_media?.url}`}
@ -94,7 +92,6 @@ export default async function BookPage(props: { params: paramsType }) {
</li> </li>
))} ))}
</div> </div>
</>
); );
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 218 KiB

View File

@ -34,8 +34,6 @@ export default function RootLayout({ children }: { children: React.ReactNode })
return ( return (
<html lang="en" className={isDarkMode ? "dark" : ""} suppressHydrationWarning> <html lang="en" className={isDarkMode ? "dark" : ""} suppressHydrationWarning>
<head> <head>
<meta charSet="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<script <script
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: ` __html: `

View File

@ -1,7 +1,11 @@
import { Book } from "@/lib/types"; import { Book } from "@/lib/types";
import { fetchBooks } from "@/lib/api"; import { fetchBooks } from "@/lib/api";
import { Ad } from "@/lib/types"; import { Ad } from "@/lib/types";
import Head from "next/head";
export const metadata = {
title: 'Null Translation Group',
description: 'This is the Something page description.',
};
export default async function HomePage() { export default async function HomePage() {
let books: Book[] = []; let books: Book[] = [];
@ -18,11 +22,7 @@ export default async function HomePage() {
} }
return ( return (
<>
<Head>
<title>Null Translation Group</title>
<meta name="description" content="Null Translation Group main hub for all the books we are currently translating" />
</Head>
<div className="mx-auto p-6 bg-gray-100 dark:bg-gray-900 text-gray-900 dark:text-gray-100 min-h-screen"> <div className="mx-auto p-6 bg-gray-100 dark:bg-gray-900 text-gray-900 dark:text-gray-100 min-h-screen">
<div className="hidden md:block bg-yellow-500 text-black py-2 px-4 rounded-lg hover:bg-yellow-600 transition duration-200 mb-6"> <div className="hidden md:block bg-yellow-500 text-black py-2 px-4 rounded-lg hover:bg-yellow-600 transition duration-200 mb-6">
<a <a
@ -69,7 +69,5 @@ export default async function HomePage() {
)})} )})}
</div> </div>
</div> </div>
</>
); );
} }

View File

@ -17,6 +17,5 @@ export default {
darkMode: "class", darkMode: "class",
plugins: [ plugins: [
require("@tailwindcss/typography"), require("@tailwindcss/typography"),
require("@tailwindcss/line-clamp"),
require('@tailwindcss/aspect-ratio')], require('@tailwindcss/aspect-ratio')],
} satisfies Config; } satisfies Config;