import React, { useState, useEffect, useCallback } from 'react' import { usePage } from '@inertiajs/react' import axios from 'axios' import PostCard from '../../Components/Feed/PostCard' import PostCardSkeleton from '../../Components/Feed/PostCardSkeleton' function TrendingHashtagsSidebar({ hashtags, activeTag = null }) { if (!hashtags || hashtags.length === 0) return null return (
Trending Tags
{hashtags.map((h) => ( #{h.tag} {h.post_count} posts ))}
) } export default function TrendingFeed() { const { props } = usePage() const { auth, trendingHashtags } = props const authUser = auth?.user ?? null const [posts, setPosts] = useState([]) const [loading, setLoading] = useState(true) const [page, setPage] = useState(1) const [hasMore, setHasMore] = useState(false) const [loaded, setLoaded] = useState(false) const fetchFeed = useCallback(async (p = 1) => { setLoading(true) try { const { data } = await axios.get('/api/feed/trending', { params: { page: p } }) setPosts((prev) => p === 1 ? data.data : [...prev, ...data.data]) setHasMore(data.meta.current_page < data.meta.last_page) setPage(p) } catch { // } finally { setLoading(false) setLoaded(true) } }, []) useEffect(() => { fetchFeed(1) }, []) const handleDeleted = useCallback((id) => setPosts((prev) => prev.filter((p) => p.id !== id)), []) return (
{/* ── Main feed ──────────────────────────────────────────────── */}

Trending

Most engaging posts right now

{!loaded && loading && ( <>{Array.from({ length: 3 }).map((_, i) => )} )} {loaded && !loading && posts.length === 0 && (

Nothing trending yet

Check back soon — posts are ranked by engagement.

)} {posts.map((post) => ( ))} {loaded && hasMore && (
)}
{/* ── Sidebar ────────────────────────────────────────────────── */}
) }