Files
kgroad-frontend2/src/app/[locale]/news/[id]/page.tsx
T

99 lines
2.6 KiB
TypeScript

import Typography from "@/shared/ui/components/Typography/Typography";
import "./NewsDetails.scss";
import { apiInstance } from "@/shared/config/apiConfig";
import { INews } from "@/shared/types/news-type";
import Image from "next/image";
import message from "./icons/message.svg";
import calendar from "./icons/calendar.svg";
import ReviewSection from "@/widgets/ReviewSection/ReviewSection";
import BreadCrumbs from "@/features/BreadCrumbs/BreadCrumbs";
import { Metadata } from "next";
export async function generateMetadata({
params,
}: {
params: { id: string };
}): Promise<Metadata> {
const response = await apiInstance.get<INews>(
`/news/${params.id}/`
);
return {
title: response.data.title,
description: response.data.description,
openGraph: {
images: [response.data.image],
type: "article",
publishedTime: response.data.created_at,
},
};
}
const NewsDetails = async ({
params,
}: {
params: { id: string; новость: string };
}) => {
const getNewsById = async () => {
const response = await apiInstance.get<INews>(
`/news/${params.id}/`
);
return response.data;
};
const data = await getNewsById();
const months: Record<string, string> = {
"01": "Январь",
"02": "Февраль",
"03": "Март",
"04": "Апрель",
"05": "Май",
"06": "Июнь",
"07": "Июль",
"08": "Август",
"09": "Сентябрь",
"10": "Октябрь",
"11": "Ноябрь",
"12": "Декабрь",
};
return (
<div className="news-details page-padding">
<BreadCrumbs />
<Typography element="h2">{data.title}</Typography>
<div className="news-details__img">
<img id="news-img" src={data.image} alt="News Image" />
<div className="news-details__date-and-reviews">
<div className="news-details__date">
<Image src={calendar} alt="Calendar Icon" />
<p>
{months[data.created_at.slice(5, 7)]}{" "}
{data.created_at.slice(5, 7).slice(0, 1) === "0"
? data.created_at.slice(6, 7)
: data.created_at.slice(5, 7)}
, {data.created_at.slice(0, 4)}
</p>
</div>
<div className="news-details__reviews">
<Image src={message} alt="Message Icon" />
<p>Комментарии: {data.count_reviews}</p>
</div>
</div>
</div>
<div className="news-details__text">
<h3>{data.title}</h3>
<p>{data.description}</p>
</div>
<ReviewSection endpoint="news" id={data.id} />
</div>
);
};
export default NewsDetails;