Skip to content
This repository was archived by the owner on Jan 2, 2026. It is now read-only.

Commit 522e41e

Browse files
authored
✨ Feature: 채팅방 인기 뉴스 추가
1 parent df512a5 commit 522e41e

File tree

4 files changed

+64
-13
lines changed

4 files changed

+64
-13
lines changed

src/app/api/news/newsListApi.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,13 @@ export async function getSimilarNews(newsId) {
3030
const response = await refreshAxios.get(`/api/public/news/similar?newsId=${newsId}&page=0&size=4`);
3131
return response.data;
3232
}
33+
34+
export async function getChatHotNews(category) {
35+
const response = await refreshAxios.get(`/api/public/chat/top-news/${category}`);
36+
return response.data;
37+
}
38+
39+
export async function getChatHotNewsAll() {
40+
const response = await refreshAxios.get(`/api/public/chat/top-news`);
41+
return response.data;
42+
}

src/app/news/category/[categoryId]/page.js

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { useEffect, useState } from 'react';
44
import { useParams } from 'next/navigation';
5-
import { getLatestNewsByCategory, getTopViewedNews, getSimilarNews } from '@/app/api/news/newsListApi';
5+
import { getLatestNewsByCategory, getTopViewedNews, getSimilarNews, getChatHotNews } from '@/app/api/news/newsListApi';
66
import NewsList from '@/components/news/NewsList';
77
import NewsCarousel from '@/components/news/NewsCarousel';
88
import Header from '@/components/Header';
@@ -29,20 +29,22 @@ export default function CategoryNewsPage() {
2929

3030
// 해당 카테고리의 Top Viewed News 가져오기
3131
const topNews = await getTopViewedNews(categoryId);
32+
// 해당 카테고리의 Chat Hot News 가져오기
33+
const chatHotNewsData = await getChatHotNews(categoryId);
3234
const carouselGroups = [];
33-
if (topNews.data) {
35+
36+
37+
// Top Viewed News가 있고 데이터가 있을 때만 추가
38+
if (topNews?.data && Object.keys(topNews.data).length > 0) {
3439
const mainNews = topNews.data;
35-
console.log(mainNews);
3640
try {
3741
const similarNewsData = await getSimilarNews(mainNews.guid);
38-
console.log(similarNewsData);
3942

4043
carouselGroups.push({
4144
mainNews,
4245
relatedNews: similarNewsData.data?.newsSearchResponseList.slice(1, 4) || []
4346
});
4447
} catch (similarError) {
45-
// similar news 에러가 발생해도 main news는 표시
4648
carouselGroups.push({
4749
mainNews,
4850
relatedNews: []
@@ -51,6 +53,25 @@ export default function CategoryNewsPage() {
5153
}
5254
}
5355

56+
// Chat Hot News가 있고 데이터가 있을 때만 추가
57+
if (chatHotNewsData && Object.keys(chatHotNewsData).length > 0) {
58+
const chatHotMainNews = chatHotNewsData;
59+
try {
60+
const similarNewsData = await getSimilarNews(chatHotMainNews.guid);
61+
62+
carouselGroups.push({
63+
mainNews: chatHotMainNews,
64+
relatedNews: similarNewsData.data?.newsSearchResponseList.slice(1, 4) || []
65+
});
66+
} catch (similarError) {
67+
carouselGroups.push({
68+
mainNews: chatHotMainNews,
69+
relatedNews: []
70+
});
71+
console.error('Similar news fetch error for chat hot news:', similarError);
72+
}
73+
}
74+
5475
setCarouselNews(carouselGroups);
5576
} catch (err) {
5677
setError(err.message);

src/app/page.js

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import { useEffect, useState } from 'react';
44
import { useRouter } from 'next/navigation';
5-
import { getLatestNews, getTopViewedNews, getSimilarNews } from '@/app/api/news/newsListApi';
5+
import { getLatestNews, getTopViewedNews, getSimilarNews, getChatHotNewsAll } from '@/app/api/news/newsListApi';
66
import NewsList from '@/components/news/NewsList';
77
import NewsCarousel from '@/components/news/NewsCarousel';
88
import Header from '@/components/Header';
@@ -25,32 +25,49 @@ export default function HomePage() {
2525
try {
2626
setCarouselLoading(true);
2727

28-
// 1. Top Viewed News 가져오기 (나중에는 Hot News도 추가)
28+
// 1. Top Viewed News 가져오기
2929
const topNews = await getTopViewedNews("all");
30+
// 2. Chat Hot News 가져오기
31+
const chatHotNewsData = await getChatHotNewsAll();
3032
const carouselGroups = [];
31-
33+
3234
if (topNews.data) {
3335
const mainNews = topNews.data;
34-
console.log(mainNews);
3536
try {
3637
const similarNewsData = await getSimilarNews(mainNews.guid);
37-
console.log(similarNewsData);
3838

3939
carouselGroups.push({
4040
mainNews,
4141
relatedNews: similarNewsData.data?.newsSearchResponseList.slice(1, 4) || []
4242
});
4343
} catch (similarError) {
44-
// similar news 에러가 발생해도 main news는 표시
4544
carouselGroups.push({
4645
mainNews,
4746
relatedNews: []
4847
});
4948
console.error('Similar news fetch error:', similarError);
5049
}
5150
}
52-
console.log(carouselGroups);
5351

52+
// Chat Hot News 추가
53+
if (chatHotNewsData) {
54+
const chatHotMainNews = chatHotNewsData;
55+
try {
56+
const similarNewsData = await getSimilarNews(chatHotMainNews.guid);
57+
58+
carouselGroups.push({
59+
mainNews: chatHotMainNews,
60+
relatedNews: similarNewsData.data?.newsSearchResponseList.slice(1, 4) || []
61+
});
62+
} catch (similarError) {
63+
carouselGroups.push({
64+
mainNews: chatHotMainNews,
65+
relatedNews: []
66+
});
67+
console.error('Similar news fetch error for chat hot news:', similarError);
68+
}
69+
}
70+
console.log(carouselGroups);
5471
setCarouselNews(carouselGroups);
5572
} catch (err) {
5673
setError(err.message);

src/components/news/NewsCarousel.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,10 @@ export default function NewsCarousel({ carouselGroups = [], loading = false }) {
7575
{/* 메인 뉴스 */}
7676
<div className="w-full md:w-1/2 p-4">
7777
<h2 className="text-2xl font-bold mb-4 text-gray-900 flex items-center gap-1">
78-
<span className="text-blue-500 text-3xl"># </span>인기뉴스
78+
<span className="text-blue-500 text-3xl"># </span>
79+
{carouselGroups.length === 2 ? (
80+
index === 0 ? 'Hot 뉴스' : 'TalkPeak 뉴스'
81+
) : '인기뉴스'}
7982
</h2>
8083
<Link href={`/news/detail/${group.mainNews.guid}`} className="block relative h-[250px] md:h-[calc(100%-3rem)] rounded-lg overflow-hidden hover:ring-2 hover:ring-[#0E74F9] transition-all">
8184
{group.mainNews.imageUrl ? (

0 commit comments

Comments
 (0)