import React, { useState, useEffect } from "react"; import { Link } from "react-router-dom"; import { useAuth } from "../contexts/AuthContext"; import { API_BASE } from "../config"; import Layout, { SkeletonCard } from "./Layout"; function BlogHome() { const [posts, setPosts] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(null); useEffect(() => { async function getTingyun() { setLoading(true); try { const response = await fetch(`${API_BASE}/posts`); if (!response.ok) throw new Error( `Failed to fetch posts: ${response.statusText}`, ); const postsData = await response.json(); setPosts(postsData); } catch (e) { console.error("Error fetching posts:", e); setError( "Failed to load posts. Please check if the backend server is running.", ); } finally { setLoading(false); } } getTingyun(); }, []); if (loading) { return (
{[1, 2, 3, 4, 5, 6].map((i) => ( ))}
); } if (error) { return (

Error

{error}

); } return (
{posts.map((post) => (

{post.title}

{post.description}
Read more →
))}
); } export default BlogHome;