1 import { Subject } from 'rxjs'
2 import { Component, OnInit } from '@angular/core'
3 import { Notifier, ScreenService, User, UserService } from '@app/core'
4 import { Video } from '@app/shared/shared-main'
5 import { OverviewService } from './overview.service'
6 import { VideosOverview } from './videos-overview.model'
9 selector: 'my-video-overview',
10 templateUrl: './video-overview.component.html',
11 styleUrls: [ './video-overview.component.scss' ]
13 export class VideoOverviewComponent implements OnInit {
14 onDataSubject = new Subject<any>()
16 overviews: VideosOverview[] = []
21 private loaded = false
22 private currentPage = 1
24 private lastWasEmpty = false
25 private isLoading = false
28 private notifier: Notifier,
29 private userService: UserService,
30 private overviewService: OverviewService,
31 private screenService: ScreenService
35 this.loadMoreResults()
37 this.userService.getAnonymousOrLoggedUser()
38 .subscribe(user => this.userMiniature = user)
40 this.userService.listenAnonymousUpdate()
41 .subscribe(user => this.userMiniature = user)
44 buildVideoChannelBy (object: { videos: Video[] }) {
45 return object.videos[0].byVideoChannel
48 buildVideoChannel (object: { videos: Video[] }) {
49 return object.videos[0].channel
52 buildVideos (videos: Video[]) {
53 const numberOfVideos = this.screenService.getNumberOfAvailableMiniatures()
55 return videos.slice(0, numberOfVideos * 2)
59 if (this.currentPage >= this.maxPage) return
60 if (this.lastWasEmpty) return
61 if (this.isLoading) return
64 this.loadMoreResults()
67 private loadMoreResults () {
70 this.overviewService.getVideosOverview(this.currentPage)
73 this.isLoading = false
75 if (overview.tags.length === 0 && overview.channels.length === 0 && overview.categories.length === 0) {
76 this.lastWasEmpty = true
77 if (this.loaded === false) this.notResults = true
83 this.onDataSubject.next(overview)
85 this.overviews.push(overview)
89 this.notifier.error(err.message)
90 this.isLoading = false