diff --git a/src/newsreader/js/pages/homepage/components/postlist/PostItem.js b/src/newsreader/js/pages/homepage/components/postlist/PostItem.js
index a03fcf1..205c3b5 100644
--- a/src/newsreader/js/pages/homepage/components/postlist/PostItem.js
+++ b/src/newsreader/js/pages/homepage/components/postlist/PostItem.js
@@ -34,8 +34,11 @@ class PostItem extends React.Component {
ruleUrl = `${this.props.feedUrl}/${rule.id}/`;
}
+ {
+ /* TODO: figure out why this is called up to three times */
+ }
return (
-
+
post.read === false);
-
- if (lastPost && (!this.lastPost || lastPost.id != this.lastPost.id)) {
- const observeTarget = document.querySelector(
- `.posts__item[data-id="${lastPost.id}"]`
- );
-
- this.lastPost = lastPost;
- this.observer.observe(observeTarget);
+ if (this.lastPostRef.current) {
+ this.observer.observe(this.lastPostRef.current);
}
}
@@ -65,17 +57,22 @@ class PostList extends React.Component {
render() {
const postItems = this.props.postsByType.map((item, index) => {
- return (
-
- );
+ const isLastItem = this.props.postsByType.length - 1 == index;
+ const defaultProps = {
+ key: index,
+ post: item,
+ selected: this.props.selected,
+ feedUrl: this.props.feedUrl,
+ subredditUrl: this.props.subredditUrl,
+ timelineUrl: this.props.timelineUrl,
+ timezone: this.props.timezone,
+ };
+
+ if (isLastItem && !item.read) {
+ return ;
+ } else {
+ return ;
+ }
});
if (isEqual(this.props.selected, {})) {