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' export default function SavedFeed() { 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 fetchFeed = useCallback(async (p = 1) => { setLoading(true) try { const { data } = await axios.get('/api/posts/saved', { 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)), []) // When a post is unsaved, remove it from the list too const handleUnsaved = useCallback((id) => setPosts((prev) => prev.filter((p) => p.id !== id)), []) return (
{/* Header */}

Saved Posts

Posts you've bookmarked

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

Nothing saved yet

Bookmark posts to read later. Look for the{' '} icon on any post.

Browse trending posts →
)} {posts.map((post) => ( ))} {loaded && hasMore && (
)}
) }