import { useState, useEffect } from 'react' import { getPosts } from '../utils/api' import PostCard from '../components/PostCard' import CreatePostModal from '../components/CreatePostModal' import { Plus } from 'lucide-react' import { hapticFeedback } from '../utils/telegram' import './Feed.css' export default function Feed({ user }) { const [posts, setPosts] = useState([]) const [loading, setLoading] = useState(true) const [showCreateModal, setShowCreateModal] = useState(false) const [filter, setFilter] = useState('all') const [page, setPage] = useState(1) const [hasMore, setHasMore] = useState(true) useEffect(() => { loadPosts() }, [filter]) const loadPosts = async (pageNum = 1) => { try { setLoading(true) const params = {} if (filter !== 'all') { params.tag = filter } params.page = pageNum const data = await getPosts(params) if (pageNum === 1) { setPosts(data.posts) } else { setPosts(prev => [...prev, ...data.posts]) } setHasMore(pageNum < data.totalPages) setPage(pageNum) } catch (error) { console.error('Ошибка загрузки постов:', error) } finally { setLoading(false) } } const handleCreatePost = () => { hapticFeedback('light') setShowCreateModal(true) } const handlePostCreated = (newPost) => { setPosts(prev => [newPost, ...prev]) setShowCreateModal(false) } const handleLoadMore = () => { if (!loading && hasMore) { loadPosts(page + 1) } } return (
{/* Хедер */}

NakamaSpace

{/* Фильтры */}
{/* Посты */}
{loading && posts.length === 0 ? (
) : posts.length === 0 ? (

Пока нет постов

) : ( <> {posts.map(post => ( ))} {hasMore && ( )} )}
{/* Модальное окно создания поста */} {showCreateModal && ( setShowCreateModal(false)} onPostCreated={handlePostCreated} /> )}
) }