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, {})) {