Fix concurrent requests in videos list

pull/572/head
Chocobozzz 2018-05-16 10:20:56 +02:00
parent ac235c37e2
commit 5f73f5da1d
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
1 changed files with 9 additions and 1 deletions

View File

@ -45,6 +45,7 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
abstract titlePage: string
protected loadedPages: { [ id: number ]: Video[] } = {}
protected loadingPage: { [ id: number ]: boolean } = {}
protected otherRouteParams = {}
private resizeSubscription: Subscription
@ -95,11 +96,15 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
loadMoreVideos (page: number) {
if (this.loadedPages[page] !== undefined) return
if (this.loadingPage[page] === true) return
this.loadingPage[page] = true
const observable = this.getVideosObservable(page)
observable.subscribe(
({ videos, totalVideos }) => {
this.loadingPage[page] = false
// Paging is too high, return to the first one
if (this.pagination.currentPage > 1 && totalVideos <= ((this.pagination.currentPage - 1) * this.pagination.itemsPerPage)) {
this.pagination.currentPage = 1
@ -117,7 +122,10 @@ export abstract class AbstractVideoList implements OnInit, OnDestroy {
setTimeout(() => this.infiniteScroller.initialize(), 500)
}
},
error => this.notificationsService.error('Error', error.message)
error => {
this.loadingPage[page] = false
this.notificationsService.error('Error', error.message)
}
)
}