The mystery of the glossary addition. I really gotta figure out why it refuses to populate glossary and cover with chapters at the same time.

This commit is contained in:
Hieuhuy Pham 2025-01-23 01:44:12 -05:00
parent 554a6dff45
commit 97e318ce6f

View File

@ -1,5 +1,5 @@
import { addDays, subDays } from "date-fns"; import { addDays, subDays } from "date-fns";
import { Book, Chapter, Editor, Announcement } from "./types"; import { Book, Chapter, Editor, Announcement, Glossary } from "./types";
const API_URL = process.env.NEXT_PUBLIC_API_URL as string; const API_URL = process.env.NEXT_PUBLIC_API_URL as string;
const API_TOKEN = process.env.STRAPI_API_TOKEN as string; const API_TOKEN = process.env.STRAPI_API_TOKEN as string;
@ -81,9 +81,13 @@ export async function fetchBookChapterLinks(bookId: string): Promise<Book> {
*/ */
export async function fetchBookById(bookId: string): Promise<Book> { export async function fetchBookById(bookId: string): Promise<Book> {
const currentDateTime = new Date().toISOString(); const currentDateTime = new Date().toISOString();
//[chapters][filters][release_datetime][$lte]=${currentDateTime}
const data = await fetchFromAPI<Book>( const data = await fetchFromAPI<Book>(
`/api/books/${bookId}?populate[chapters][filters][release_datetime][$lte]=${currentDateTime}&populate=cover` `/api/books/${bookId}?populate[chapters][filters][release_datetime][$lte]=${currentDateTime}&populate=cover`
); );
//I do not know why the hell it refuse to populate glossary only 1 field is allow to be populated after ????????
const glossary = await fetchGlossaryByBookId(bookId);
data[0].glossary = glossary;
data[0].chapters = data[0].chapters.sort((a, b) => a.number - b.number); data[0].chapters = data[0].chapters.sort((a, b) => a.number - b.number);
return data[0]; return data[0];
} }
@ -93,10 +97,8 @@ export async function fetchBookById(bookId: string): Promise<Book> {
*/ */
export async function fetchChapterByBookId(bookId: string, chapterId: string): Promise<Chapter[]> { export async function fetchChapterByBookId(bookId: string, chapterId: string): Promise<Chapter[]> {
const currentChapter = await fetchFromAPI<Chapter>(`/api/chapters/${chapterId}?populate[book][fields][0]=title&filters[book][documentId]=${bookId}`); const currentChapter = await fetchFromAPI<Chapter>(`/api/chapters/${chapterId}?populate[book][fields][0]=title&filters[book][documentId]=${bookId}`);
const bookWithAllChapters = await fetchFromAPI<Book>( `/api/books/${bookId}?populate[chapters][filters][number][$gte]=${ const bookWithAllChapters = await fetchFromAPI<Book>(`/api/books/${bookId}?populate[chapters][filters][number][$gte]=${currentChapter[0].number - 1
currentChapter[0].number - 1 }&populate[chapters][filters][number][$lte]=${currentChapter[0].number + 1
}&populate[chapters][filters][number][$lte]=${
currentChapter[0].number + 1
}`); }`);
//const nextChapter = await fetchFromAPI<Chapter>(`/api/chapters?populate[book]&filters[book][id]=${bookId}&sort[number]=asc`); //const nextChapter = await fetchFromAPI<Chapter>(`/api/chapters?populate[book]&filters[book][id]=${bookId}&sort[number]=asc`);
return bookWithAllChapters[0].chapters; return bookWithAllChapters[0].chapters;
@ -127,3 +129,8 @@ export async function fetchAnnouncementById(announcementId: string): Promise<Ann
const data = await fetchFromAPI<Announcement>(`/api/announcements/${announcementId}?`); const data = await fetchFromAPI<Announcement>(`/api/announcements/${announcementId}?`);
return data[0]; return data[0];
} }
export async function fetchGlossaryByBookId(bookId: string): Promise<Glossary> {
const data = await fetchFromAPI<Glossary>(`/api/glossaries?filters[book][documentId]=${bookId}`);
return data[0];
}