Skip to content

Commit 684d290

Browse files
authored
Merge pull request #47 from indrazm/fix/infinite-scroll-user-post
bugfix for observer in user page
2 parents 1f30dd0 + 0dcca51 commit 684d290

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

apps/platform/src/features/user/components/userTabs.tsx

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,17 @@ export const UserTabs = ({
2525
const [activeTab, setActiveTab] = useState("posts");
2626
const userPosts = posts.filter((post) => post.type === "post");
2727
const userReplies = posts.filter((post) => post.type === "comment");
28-
const observerTarget = useRef<HTMLDivElement>(null);
28+
const postsObserverTarget = useRef<HTMLDivElement>(null);
29+
const repliesObserverTarget = useRef<HTMLDivElement>(null);
2930

3031
useEffect(() => {
32+
const currentTarget =
33+
activeTab === "posts"
34+
? postsObserverTarget.current
35+
: repliesObserverTarget.current;
36+
37+
if (!currentTarget) return;
38+
3139
const observer = new IntersectionObserver(
3240
(entries) => {
3341
if (entries[0].isIntersecting && hasNextPage && !isFetchingNextPage) {
@@ -37,17 +45,12 @@ export const UserTabs = ({
3745
{ threshold: 1.0 },
3846
);
3947

40-
const currentTarget = observerTarget.current;
41-
if (currentTarget) {
42-
observer.observe(currentTarget);
43-
}
48+
observer.observe(currentTarget);
4449

4550
return () => {
46-
if (currentTarget) {
47-
observer.unobserve(currentTarget);
48-
}
51+
observer.unobserve(currentTarget);
4952
};
50-
}, [fetchNextPage, hasNextPage, isFetchingNextPage]);
53+
}, [activeTab, fetchNextPage, hasNextPage, isFetchingNextPage]);
5154

5255
return (
5356
<main>
@@ -75,7 +78,7 @@ export const UserTabs = ({
7578
<PostCard key={post.id} post={post} />
7679
))}
7780
{hasNextPage && (
78-
<div ref={observerTarget} className="p-4 text-center">
81+
<div ref={postsObserverTarget} className="p-4 text-center">
7982
{isFetchingNextPage ? (
8083
<div className="text-muted-foreground text-sm">
8184
Loading more...
@@ -93,7 +96,7 @@ export const UserTabs = ({
9396
<PostCard key={post.id} post={post} />
9497
))}
9598
{hasNextPage && (
96-
<div ref={observerTarget} className="p-4 text-center">
99+
<div ref={repliesObserverTarget} className="p-4 text-center">
97100
{isFetchingNextPage ? (
98101
<div className="text-muted-foreground text-sm">
99102
Loading more...

0 commit comments

Comments
 (0)