'use client'; import { Search } from 'lucide-react'; import { useEffect, useState } from 'react'; import Image from 'next/image'; import Link from 'next/link'; interface News { id: string; title: string; summary: string; description: string; } const API_BASE_URL = process.env.NEXT_PUBLIC_AWS_DB_API_URL || ''; const API_URL = `${API_BASE_URL}?queryType=joint&num_results=20`; const API_KEY = process.env.NEXT_PUBLIC_AWS_DB_API_KEY || ''; const NewsPageContent = () => { const [news, setNews] = useState([]); const [expanded, setExpanded] = useState<{ [key: string]: boolean }>({}); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { const fetchNews = async () => { try { const response = await fetch(API_URL, { method: 'GET', headers: { 'Content-Type': 'application/json', 'x-api-key': API_KEY, }, }); if (!response.ok) { throw new Error(`Failed to fetch news: ${response.statusText}`); } const data = await response.json(); console.log("API Response:", data); // Debugging: Log the API response // Convert API response into News format const formattedNews = data.result.map((item: any) => ({ id: item[0], // Video ID (used in YouTube links) title: item[1], // News title description: item[3], // Short description summary: item[4], // Full summary (for Show More) })); setNews(formattedNews); } catch (err) { setError(err instanceof Error ? err.message : 'An unknown error occurred'); } finally { setLoading(false); } }; fetchNews(); }, []); const toggleSummary = (id: string) => { setExpanded((prev) => ({ ...prev, [id]: !prev[id] })); }; if (loading) return (
); if (error) return

Error: {error}

; return (

Latest News


{news.map((item) => (
{/* Thumbnail on the Left */}
{/* Text on the Right */}

{item.title}

{expanded[item.id] ? item.description : `${item.description.slice(0, 120)}...`}

{expanded[item.id] && (

{item.summary}

)}
))}
); }; export default NewsPageContent;