1
0
mirror of https://github.com/flarum/core.git synced 2025-08-10 10:24:46 +02:00

Encapsulate viewingEnd() in state

...instead of calculating this derived value outside the state class.
This commit is contained in:
Franz Liedke
2020-07-03 22:09:26 +02:00
parent 6c087da65f
commit 8a9e50d192
2 changed files with 13 additions and 4 deletions

View File

@@ -45,7 +45,7 @@ export default class PostStream extends Component {
let lastTime;
this.state.visibleEnd = this.state.sanitizeIndex(this.state.visibleEnd);
this.state.viewingEnd = this.state.visibleEnd === this.state.count();
const viewingEnd = this.state.viewingEnd();
const posts = this.state.posts();
const postIds = this.state.discussion.postIds();
@@ -94,7 +94,7 @@ export default class PostStream extends Component {
);
});
if (!this.state.viewingEnd && posts[this.state.visibleEnd - this.state.visibleStart - 1]) {
if (!viewingEnd && posts[this.state.visibleEnd - this.state.visibleStart - 1]) {
items.push(
<div className="PostStream-loadMore" key="loadMore">
<Button className="Button" onclick={this.state.loadNext.bind(this)}>
@@ -106,7 +106,7 @@ export default class PostStream extends Component {
// If we're viewing the end of the discussion, the user can reply, and
// is not already doing so, then show a 'write a reply' placeholder.
if (this.state.viewingEnd && (!app.session.user || this.state.discussion.canReply())) {
if (viewingEnd && (!app.session.user || this.state.discussion.canReply())) {
items.push(
<div className="PostStream-item" key="reply">
{ReplyPlaceholder.component({ discussion: this.state.discussion })}

View File

@@ -148,6 +148,15 @@ class PostStreamState {
return this.discussion.postIds().length;
}
/**
* Are we currently viewing the end of the discussion?
*
* @return {boolean}
*/
viewingEnd() {
return this.visibleEnd === this.count();
}
/**
* Make sure that the given index is not outside of the possible range of
* indexes in the discussion.
@@ -166,7 +175,7 @@ class PostStreamState {
* @public
*/
update() {
if (!this.viewingEnd) return m.deferred().resolve().promise;
if (!this.viewingEnd()) return m.deferred().resolve().promise;
this.visibleEnd = this.count();