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' const FILTER_OPTIONS = [ { value: 'all', label: 'All' }, { value: 'shares', label: 'Artwork Shares' }, { value: 'uploads', label: 'New Uploads' }, { value: 'text', label: 'Text Posts' }, ] function EmptyFollowingState() { return (

Nothing here yet

Follow some creators to see their posts here. Discover amazing artwork on{' '} Trending.

) } export default function FollowingFeed() { const { props } = usePage() const { auth } = 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 [filter, setFilter] = useState('all') const fetchFeed = useCallback(async (p = 1, f = filter) => { setLoading(true) try { const { data } = await axios.get('/api/posts/following', { params: { page: p, filter: f }, }) 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) } }, [filter]) useEffect(() => { fetchFeed(1, filter) }, [filter]) const handleFilterChange = (f) => { if (f === filter) return setFilter(f) setPosts([]) setLoaded(false) setPage(1) } const handleDeleted = useCallback((postId) => { setPosts((prev) => prev.filter((p) => p.id !== postId)) }, []) return (
{/* ── Page header ────────────────────────────────────────────────────── */}

Following Feed

Posts from creators you follow

Discover creators →
{/* Filter chips */}
{FILTER_OPTIONS.map((f) => ( ))}
{/* ── Feed ────────────────────────────────────────────────────────────── */}
{/* Loading skeletons */} {!loaded && loading && ( <> )} {/* Empty */} {loaded && !loading && posts.length === 0 && } {/* Posts */} {posts.map((post) => ( ))} {/* Load more */} {loaded && hasMore && (
)}
) }