import { useMemo } from "react"; import PostOnFeed from "../../pages/PostOnFeed"; import AdSlot from "../AdSlot"; import { withAds } from "../../utils/withAds"; const AD_EVERY = 10; export default function FeedContent({ loading, cityLoading, citySearchActive, error, filteredAds, activeNav, searchPrompt, liked, likeCountAdj, onLike, onEdit, onDelete, onMarkFound, onImageClick, onLocationClick, onAuthRequired, showAds = false, t, }) { // Реклама вставляется только на главной ленте (showAds). useMemo — чтобы // при ре-рендерах (виждет-обновления, лайки и т.п.) позиции слотов не // пересчитывались и уже загруженные объявления не терялись. const feedItems = useMemo( () => withAds(filteredAds, showAds ? AD_EVERY : 0), [filteredAds, showAds] ); if (loading || (citySearchActive && cityLoading)) { return (
{t('feed.loading')}
); } if (error) { return (
⚠️
{t('feed.loadError')}
{error}
); } if (searchPrompt) { return (
🔍
{t('feed.searchPromptTitle')}
{t('feed.searchPromptSub')}
); } if (!filteredAds.length) { const emptyMsg = activeNav === "myads" ? { title: t('feed.emptyMyAdsTitle'), sub: t('feed.emptyMyAdsSub') } : activeNav === "favorites" ? { title: t('feed.emptyFavoritesTitle'), sub: t('feed.emptyFavoritesSub'), icon: "❤️" } : citySearchActive ? { title: t('feed.emptyCityTitle'), sub: t('feed.emptyCitySub') } : { title: t('feed.emptyAllTitle'), sub: t('feed.emptyAllSub') }; return (
{emptyMsg.icon || "🔍"}
{emptyMsg.title}
); } return ( <> {feedItems.map((item) => item.kind === "ad" ? ( ) : ( ) )} ); }