X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Babout%2Fabout-follows%2Fabout-follows.component.ts;h=84b47e96791ac1eab94108ed2e2582cf48260035;hb=2c2befaacaa7063df0d4557b71c187ee168a8eb6;hp=e5526248c61904728074d8ee7f7b597e7f726e78;hpb=bd49f8e988429447747e34533df5eab5b7bed210;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+about/about-follows/about-follows.component.ts b/client/src/app/+about/about-follows/about-follows.component.ts index e5526248c..84b47e967 100644 --- a/client/src/app/+about/about-follows/about-follows.component.ts +++ b/client/src/app/+about/about-follows/about-follows.component.ts @@ -1,5 +1,4 @@ import { SortMeta } from 'primeng/api' -import { Subject } from 'rxjs' import { Component, OnInit } from '@angular/core' import { ComponentPagination, hasMoreItems, Notifier, RestService } from '@app/core' import { InstanceFollowService } from '@app/shared/shared-instance' @@ -14,19 +13,19 @@ export class AboutFollowsComponent implements OnInit { followers: string[] = [] followings: string[] = [] - showMoreFollowers = false - showMoreFollowings = false + loadedAllFollowers = false + loadedAllFollowings = false followersPagination: ComponentPagination = { currentPage: 1, itemsPerPage: 20, - totalItems: null + totalItems: 0 } followingsPagination: ComponentPagination = { currentPage: 1, itemsPerPage: 20, - totalItems: null + totalItems: 0 } sort: SortMeta = { @@ -34,8 +33,6 @@ export class AboutFollowsComponent implements OnInit { order: -1 } - onDataSubject = new Subject() - constructor ( private restService: RestService, private notifier: Notifier, @@ -49,6 +46,13 @@ export class AboutFollowsComponent implements OnInit { } loadAllFollowings () { + if (this.loadedAllFollowings) return + + this.loadedAllFollowings = true + this.followingsPagination.itemsPerPage = 100 + + this.loadMoreFollowings(true) + while (hasMoreItems(this.followingsPagination)) { this.followingsPagination.currentPage += 1 @@ -57,6 +61,13 @@ export class AboutFollowsComponent implements OnInit { } loadAllFollowers () { + if (this.loadedAllFollowers) return + + this.loadedAllFollowers = true + this.followersPagination.itemsPerPage = 100 + + this.loadMoreFollowers(true) + while (hasMoreItems(this.followersPagination)) { this.followersPagination.currentPage += 1 @@ -68,40 +79,48 @@ export class AboutFollowsComponent implements OnInit { return window.location.protocol + '//' + host } - private loadMoreFollowers () { - const pagination = this.restService.componentPaginationToRestPagination(this.followersPagination) + canLoadMoreFollowers () { + return this.loadedAllFollowers || this.followersPagination.totalItems > this.followersPagination.itemsPerPage + } + + canLoadMoreFollowings () { + return this.loadedAllFollowings || this.followingsPagination.totalItems > this.followingsPagination.itemsPerPage + } + + private loadMoreFollowers (reset = false) { + const pagination = this.restService.componentToRestPagination(this.followersPagination) + + this.followService.getFollowers({ pagination, sort: this.sort, state: 'accepted' }) + .subscribe({ + next: resultList => { + if (reset) this.followers = [] - this.followService.getFollowers({ pagination: pagination, sort: this.sort, state: 'accepted' }) - .subscribe( - resultList => { const newFollowers = resultList.data.map(r => r.follower.host) this.followers = this.followers.concat(newFollowers) this.followersPagination.totalItems = resultList.total - - this.onDataSubject.next(newFollowers) }, - err => this.notifier.error(err.message) - ) + error: err => this.notifier.error(err.message) + }) } - private loadMoreFollowings () { - const pagination = this.restService.componentPaginationToRestPagination(this.followingsPagination) + private loadMoreFollowings (reset = false) { + const pagination = this.restService.componentToRestPagination(this.followingsPagination) this.followService.getFollowing({ pagination, sort: this.sort, state: 'accepted' }) - .subscribe( - resultList => { + .subscribe({ + next: resultList => { + if (reset) this.followings = [] + const newFollowings = resultList.data.map(r => r.following.host) this.followings = this.followings.concat(newFollowings) this.followingsPagination.totalItems = resultList.total - - this.onDataSubject.next(newFollowings) }, - err => this.notifier.error(err.message) - ) + error: err => this.notifier.error(err.message) + }) } }