"use client"; import Image from "next/image"; import Link from "next/link"; import { ThumbsUp, ThumbsDown } from "lucide-react"; import { useEffect, useState } from "react"; import { getListContent, listData, listArticles, listStaticBanner, } from "@/service/landing/landing"; import { data } from "framer-motion/client"; export default function Header() { const [data, setData] = useState([]); const [selectedTab, setSelectedTab] = useState("image"); useEffect(() => { const fetchData = async () => { try { // Use new Articles API const response = await listArticles(1, 5, undefined, undefined, undefined, "createdAt"); console.log("Articles API response:", response); if (response?.error) { console.error("Articles API failed, falling back to old API"); // Fallback to old API const fallbackResponse = await listData( "", "", "", 5, 0, "createdAt", "", "", "" ); const content = fallbackResponse?.data?.data?.content || []; setData(content); return; } // Handle new API response structure const articlesData = response?.data?.data || []; console.log("Articles data:", articlesData); // Transform articles data to match old structure for backward compatibility const transformedData = articlesData.map((article: any) => ({ id: article.id, title: article.title, categoryName: article.categoryName || (article.categories && article.categories[0]?.title) || "", createdAt: article.createdAt, smallThumbnailLink: article.thumbnailUrl, fileTypeId: article.typeId, label: article.typeId === 1 ? "Image" : article.typeId === 2 ? "Video" : article.typeId === 3 ? "Text" : article.typeId === 4 ? "Audio" : "", ...article })); setData(transformedData); } catch (error) { console.error("Gagal memuat data:", error); // Try fallback to old API if new API fails try { const fallbackResponse = await listData( "", "", "", 5, 0, "createdAt", "", "", "" ); const content = fallbackResponse?.data?.data?.content || []; setData(content); } catch (fallbackError) { console.error("Fallback API also failed:", fallbackError); } } }; fetchData(); }, []); return (
{data.length > 0 && }
{data.slice(1, 5).map((item) => ( ))}
{"pps"}
); } function Card({ item, isBig = false }: { item: any; isBig?: boolean }) { const getLink = () => { switch (item?.fileTypeId) { case 1: return `/content/image/detail/${item?.id}`; case 2: return `/content/video/detail/${item?.id}`; case 3: return `/content/text/detail/${item?.id}`; case 4: return `/content/audio/detail/${item?.id}`; default: return "#"; // fallback kalau type tidak dikenali } }; return (
{item.title}
{item.categoryName} {item.label}
{new Date(item.createdAt) .toLocaleString("id-ID", { day: "2-digit", month: "short", year: "numeric", hour: "2-digit", minute: "2-digit", hour12: false, timeZone: "Asia/Jakarta", }) .replace(".", ":")}{" "} WIB

{item.title}

); }