Correctly hide next / prev in paginators. Fixes #914

This commit is contained in:
Dessalines 2020-07-09 14:44:34 -04:00
parent 20f9bde88f
commit 34f6e61765
6 changed files with 45 additions and 37 deletions

View file

@ -160,7 +160,7 @@ export class Communities extends Component<any, CommunitiesState> {
</button> </button>
)} )}
{this.state.communities.length == communityLimit && ( {this.state.communities.length > 0 && (
<button <button
class="btn btn-sm btn-secondary" class="btn btn-sm btn-secondary"
onClick={linkEvent(this, this.nextPage)} onClick={linkEvent(this, this.nextPage)}

View file

@ -260,7 +260,7 @@ export class Community extends Component<any, State> {
{i18n.t('prev')} {i18n.t('prev')}
</button> </button>
)} )}
{this.state.posts.length == fetchLimit && ( {this.state.posts.length > 0 && (
<button <button
class="btn btn-sm btn-secondary" class="btn btn-sm btn-secondary"
onClick={linkEvent(this, this.nextPage)} onClick={linkEvent(this, this.nextPage)}

View file

@ -329,12 +329,14 @@ export class Inbox extends Component<any, InboxState> {
{i18n.t('prev')} {i18n.t('prev')}
</button> </button>
)} )}
<button {this.unreadCount() > 0 && (
class="btn btn-sm btn-secondary" <button
onClick={linkEvent(this, this.nextPage)} class="btn btn-sm btn-secondary"
> onClick={linkEvent(this, this.nextPage)}
{i18n.t('next')} >
</button> {i18n.t('next')}
</button>
)}
</div> </div>
); );
} }
@ -534,15 +536,19 @@ export class Inbox extends Component<any, InboxState> {
} }
sendUnreadCount() { sendUnreadCount() {
let count = UserService.Instance.user.unreadCount = this.unreadCount();
this.state.replies.filter(r => !r.read).length +
this.state.mentions.filter(r => !r.read).length +
this.state.messages.filter(
r => !r.read && r.creator_id !== UserService.Instance.user.id
).length;
UserService.Instance.user.unreadCount = count;
UserService.Instance.sub.next({ UserService.Instance.sub.next({
user: UserService.Instance.user, user: UserService.Instance.user,
}); });
} }
unreadCount(): number {
return (
this.state.replies.filter(r => !r.read).length +
this.state.mentions.filter(r => !r.read).length +
this.state.messages.filter(
r => !r.read && r.creator_id !== UserService.Instance.user.id
).length
);
}
} }

View file

@ -497,7 +497,7 @@ export class Main extends Component<any, MainState> {
{i18n.t('prev')} {i18n.t('prev')}
</button> </button>
)} )}
{this.state.posts.length == fetchLimit && ( {this.state.posts.length > 0 && (
<button <button
class="btn btn-sm btn-secondary" class="btn btn-sm btn-secondary"
onClick={linkEvent(this, this.nextPage)} onClick={linkEvent(this, this.nextPage)}

View file

@ -148,7 +148,7 @@ export class Search extends Component<any, SearchState> {
{this.state.type_ == SearchType.Posts && this.posts()} {this.state.type_ == SearchType.Posts && this.posts()}
{this.state.type_ == SearchType.Communities && this.communities()} {this.state.type_ == SearchType.Communities && this.communities()}
{this.state.type_ == SearchType.Users && this.users()} {this.state.type_ == SearchType.Users && this.users()}
{this.noResults()} {this.resultsCount() == 0 && <span>{i18n.t('no_results')}</span>}
{this.paginator()} {this.paginator()}
</div> </div>
); );
@ -383,26 +383,26 @@ export class Search extends Component<any, SearchState> {
{i18n.t('prev')} {i18n.t('prev')}
</button> </button>
)} )}
<button
class="btn btn-sm btn-secondary" {this.resultsCount() > 0 && (
onClick={linkEvent(this, this.nextPage)} <button
> class="btn btn-sm btn-secondary"
{i18n.t('next')} onClick={linkEvent(this, this.nextPage)}
</button> >
{i18n.t('next')}
</button>
)}
</div> </div>
); );
} }
noResults() { resultsCount(): number {
let res = this.state.searchResponse; let res = this.state.searchResponse;
return ( return (
<div> res.posts.length +
{res && res.comments.length +
res.posts.length == 0 && res.communities.length +
res.comments.length == 0 && res.users.length
res.communities.length == 0 &&
res.users.length == 0 && <span>{i18n.t('no_results')}</span>}
</div>
); );
} }

View file

@ -883,12 +883,14 @@ export class User extends Component<any, UserState> {
{i18n.t('prev')} {i18n.t('prev')}
</button> </button>
)} )}
<button {this.state.comments.length + this.state.posts.length > 0 && (
class="btn btn-sm btn-secondary" <button
onClick={linkEvent(this, this.nextPage)} class="btn btn-sm btn-secondary"
> onClick={linkEvent(this, this.nextPage)}
{i18n.t('next')} >
</button> {i18n.t('next')}
</button>
)}
</div> </div>
); );
} }