Commit 98dbfa8e authored by Phạm Quang Bảo's avatar Phạm Quang Bảo

update/news detail

parent 6e043761
'use client'
//Core //Core
import dayjs from 'dayjs' import dayjs from 'dayjs'
...@@ -5,47 +7,36 @@ import dayjs from 'dayjs' ...@@ -5,47 +7,36 @@ import dayjs from 'dayjs'
import { Spinner } from '@/components/ui' import { Spinner } from '@/components/ui'
import AppEditorContent from '@/components/shared/editor-content' import AppEditorContent from '@/components/shared/editor-content'
import BASE_URLS from '@/links' import BASE_URLS from '@/links'
// import { useGetNewsId } from '#/api/endpoints/news'; import { useGetNewsId } from '@/api/endpoints/news';
import { NewsAdminItem } from '@/api/types/news'; import { GetNewsDetailResponseType } from './page.type';
import { Link, CalendarFold, Book } from 'lucide-react'; import { Link, CalendarFold, Book } from 'lucide-react';
import { useEffect, useMemo } from 'react';
import { useParams } from 'next/navigation'
// import { t } from 'i18next' // import { t } from 'i18next'
// Component // Component
const NewsDetailPage = (params: { id: string }) => { const NewsDetailPage = () => {
const { id } = useParams()
// server // server
// const { data, isLoading, isError } = useGetNewsId<NewsAdminItem>(getIdFormUrl) const { data, isLoading } = useGetNewsId<GetNewsDetailResponseType>(id as string)
// const { t, i18n } = useTranslation('newsPage') // const { t, i18n } = useTranslation('newsPage')
// const { routeParams, data } = usePageContext()
// const { newsDetail, fallbackClient } = data as Data // const { newsDetail, fallbackClient } = data as Data
// const lang = i18n.language == 'vi' ? 'vi' : 'vi' // const lang = i18n.language == 'vi' ? 'vi' : 'vi'
console.log('newsDetail', data);
// const infoNews = useMemo(() => {
// if (!fallbackClient) return newsDetail?.responseData
// if (!getNewsIdQuery.data) return
// return getNewsIdQuery.data.responseData
// }, [newsDetail?.responseData, fallbackClient, getNewsIdQuery.data])
// Effects
// useEffect(() => {
// // Update document title
// infoNews?.title && (document.title = infoNews.title)
// }, [infoNews])
const isLoading = false;
// Template // Template
return ( return (
<div className='user-news-detail-page pb-10'> <div className='pb-10'>
{isLoading ? ( {isLoading ? (
<Spinner /> <Spinner />
) : ( ) : (
<div> <div>
{/* Banner */} {/* Banner */}
<img src={`${BASE_URLS.imageEndpoint}${data?.responseData?.thumbnail}`} alt='Banner' /> <img className='w-full h-100' src={`${BASE_URLS.imageEndpoint}${data?.responseData?.thumbnail}`} alt='Banner' />
{/* Breadcrumb */} {/* Breadcrumb */}
<div className='app-container py-10'> <div className='container py-10'>
<div className='flex gap-4 items-stretch'> <div className='flex gap-4 items-stretch'>
{/* <Breadcrumbs aria-label='breadcrumb'> {/* <Breadcrumbs aria-label='breadcrumb'>
<Link <Link
...@@ -75,9 +66,9 @@ const NewsDetailPage = (params: { id: string }) => { ...@@ -75,9 +66,9 @@ const NewsDetailPage = (params: { id: string }) => {
</div> </div>
</div> </div>
<div className='app-container bg-white rounded p-10 flex flex-col gap-10'> <div className='container bg-gray-100 rounded p-10 flex flex-col gap-10'>
{/* Heading */} {/* Heading */}
<div className='text-app-blue text-[32px] leading-normal font-medium text-center'>{data?.responseData?.title}</div> <div className='text-blue-900 text-[32px] leading-normal font-medium text-center'>{data?.responseData?.title}</div>
{/* body */} {/* body */}
<div className='flex items-start gap-8 flex-col lg:flex-row'> <div className='flex items-start gap-8 flex-col lg:flex-row'>
......
export interface NewsDetailItem {
id: string
title: string
thumbnail: string
external_link: string
description: string
release_at: string
is_active: boolean
created_at: string
created_by: string | null
updated_at: string
updated_by: string | null
mode: 'NOW' | string
category: string
}
export interface NewsDetailResponseData {
count: number
rows: NewsDetailItem[]
totalPages: number
currentPage: number
}
export interface GetNewsDetailResponseType {
message: string
message_en: string
responseData: NewsDetailItem
status: 'success' | 'error'
timeStamp: string
violations: any | null
}
\ No newline at end of file
...@@ -35,25 +35,11 @@ const Home = () => { ...@@ -35,25 +35,11 @@ const Home = () => {
filters: submitSearch ? `title @=${submitSearch}` : undefined, filters: submitSearch ? `title @=${submitSearch}` : undefined,
}) })
console.log(BASE_URL.imageEndpoint, allData?.responseData.rows[0]?.thumbnail) //tab filter
const rows = allData?.responseData?.rows ?? [];
// //tab filter const filteredRows = tab === 'all'
let data ? rows
if (tab === 'all') { : rows.filter(news => news.category === tab);
data = allData
} else {
// fillter by category
const filteredRows = allData?.responseData?.rows?.filter(
(news) => news.category === tab
)
data = {
...allData,
responseData: {
...allData?.responseData,
rows: filteredRows ?? []
}
}
}
// update slidesPerView on resize to match the Swiper breakpoints // update slidesPerView on resize to match the Swiper breakpoints
useEffect(() => { useEffect(() => {
...@@ -139,7 +125,7 @@ const Home = () => { ...@@ -139,7 +125,7 @@ const Home = () => {
setCurrentIndex(typeof swiper.realIndex === 'number' ? swiper.realIndex : swiper.activeIndex) setCurrentIndex(typeof swiper.realIndex === 'number' ? swiper.realIndex : swiper.activeIndex)
}} }}
> >
{allData?.responseData.rows.map((news) => ( {allData?.responseData?.rows.map((news) => (
<SwiperSlide key={news.id}> <SwiperSlide key={news.id}>
<a href={`/tin-tuc/${news.id}`} className='block bg-white shadow-md overflow-hidden relative'> <a href={`/tin-tuc/${news.id}`} className='block bg-white shadow-md overflow-hidden relative'>
<img <img
...@@ -205,7 +191,7 @@ const Home = () => { ...@@ -205,7 +191,7 @@ const Home = () => {
{/* News list */} {/* News list */}
<div className='pb-5 overflow-hidden'> <div className='pb-5 overflow-hidden'>
{data?.responseData.rows.slice(0, 5).map((news) => ( {allData?.responseData.rows.slice(0, 5).map((news) => (
<NewsContent key={news.id} news={news} /> <NewsContent key={news.id} news={news} />
))} ))}
</div> </div>
...@@ -249,7 +235,7 @@ const Home = () => { ...@@ -249,7 +235,7 @@ const Home = () => {
</div> </div>
{/* News list */} {/* News list */}
<div className='w-[50%] pb-5 overflow-hidden'> <div className='w-[50%] pb-5 overflow-hidden'>
{data?.responseData.rows.slice(0, 5).map((news) => ( {allData?.responseData.rows.slice(0, 5).map((news) => (
<NewsContent key={news.id} news={news} /> <NewsContent key={news.id} news={news} />
))} ))}
</div> </div>
...@@ -287,7 +273,7 @@ const Home = () => { ...@@ -287,7 +273,7 @@ const Home = () => {
</div> </div>
<div className='pt-5'> <div className='pt-5'>
{data?.responseData.rows.slice(0, 5).map((news) => ( {allData?.responseData.rows.slice(0, 5).map((news) => (
<NewsContent key={news.id} news={news} /> <NewsContent key={news.id} news={news} />
))} ))}
</div> </div>
...@@ -306,7 +292,7 @@ const Home = () => { ...@@ -306,7 +292,7 @@ const Home = () => {
</div> </div>
<div className='pt-5'> <div className='pt-5'>
{data?.responseData.rows.slice(0, 5).map((news) => ( {allData?.responseData.rows.slice(0, 5).map((news) => (
<NewsContent key={news.id} news={news} /> <NewsContent key={news.id} news={news} />
))} ))}
</div> </div>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment