added advertising
This commit is contained in:
@@ -1,4 +1,9 @@
|
||||
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,
|
||||
@@ -17,8 +22,16 @@ export default function FeedContent({
|
||||
onImageClick,
|
||||
onLocationClick,
|
||||
onAuthRequired,
|
||||
showAds = false,
|
||||
t,
|
||||
}) {
|
||||
// Реклама вставляется только на главной ленте (showAds). useMemo — чтобы
|
||||
// при ре-рендерах (виждет-обновления, лайки и т.п.) позиции слотов не
|
||||
// пересчитывались и уже загруженные объявления не терялись.
|
||||
const feedItems = useMemo(
|
||||
() => withAds(filteredAds, showAds ? AD_EVERY : 0),
|
||||
[filteredAds, showAds]
|
||||
);
|
||||
if (loading || (citySearchActive && cityLoading)) {
|
||||
return (
|
||||
<div className="f-center">
|
||||
@@ -68,20 +81,28 @@ export default function FeedContent({
|
||||
);
|
||||
}
|
||||
|
||||
return filteredAds.map(ad => (
|
||||
<PostOnFeed
|
||||
key={ad.id}
|
||||
ad={ad}
|
||||
liked={liked.has(ad.id)}
|
||||
likeCountAdj={likeCountAdj[ad.id] || 0}
|
||||
onLike={onLike}
|
||||
onEdit={activeNav === "myads" ? onEdit : undefined}
|
||||
onDelete={activeNav === "myads" ? onDelete : undefined}
|
||||
onMarkFound={activeNav === "myads" ? onMarkFound : undefined}
|
||||
isOwner={activeNav === "myads"}
|
||||
onImageClick={onImageClick}
|
||||
onLocationClick={onLocationClick}
|
||||
onAuthRequired={onAuthRequired}
|
||||
/>
|
||||
));
|
||||
return (
|
||||
<>
|
||||
{feedItems.map((item) =>
|
||||
item.kind === "ad" ? (
|
||||
<AdSlot key={item.key} />
|
||||
) : (
|
||||
<PostOnFeed
|
||||
key={item.data.id}
|
||||
ad={item.data}
|
||||
liked={liked.has(item.data.id)}
|
||||
likeCountAdj={likeCountAdj[item.data.id] || 0}
|
||||
onLike={onLike}
|
||||
onEdit={activeNav === "myads" ? onEdit : undefined}
|
||||
onDelete={activeNav === "myads" ? onDelete : undefined}
|
||||
onMarkFound={activeNav === "myads" ? onMarkFound : undefined}
|
||||
isOwner={activeNav === "myads"}
|
||||
onImageClick={onImageClick}
|
||||
onLocationClick={onLocationClick}
|
||||
onAuthRequired={onAuthRequired}
|
||||
/>
|
||||
)
|
||||
)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user