1 import { Subject } from 'rxjs'
2 import { Component, OnInit } from '@angular/core'
3 import { Notifier } from '@app/core'
4 import { User, UserService } from '@app/shared'
5 import { ScreenService } from '@app/shared/misc/screen.service'
6 import { OverviewService } from '@app/shared/overview'
7 import { VideosOverview } from '@app/shared/overview/videos-overview.model'
8 import { Video } from '@app/shared/video/video.model'
11 selector: 'my-video-overview',
12 templateUrl: './video-overview.component.html',
13 styleUrls: [ './video-overview.component.scss' ]
15 export class VideoOverviewComponent implements OnInit {
16 onDataSubject = new Subject<any>()
18 overviews: VideosOverview[] = []
23 private loaded = false
24 private currentPage = 1
26 private lastWasEmpty = false
27 private isLoading = false
30 private notifier: Notifier,
31 private userService: UserService,
32 private overviewService: OverviewService,
33 private screenService: ScreenService
37 this.loadMoreResults()
39 this.userService.getAnonymousOrLoggedUser()
40 .subscribe(user => this.userMiniature = user)
42 this.userService.listenAnonymousUpdate()
43 .subscribe(user => this.userMiniature = user)
46 buildVideoChannelBy (object: { videos: Video[] }) {
47 return object.videos[0].byVideoChannel
50 buildVideoChannelAvatarUrl (object: { videos: Video[] }) {
51 return object.videos[0].videoChannelAvatarUrl
54 buildVideos (videos: Video[]) {
55 const numberOfVideos = this.screenService.getNumberOfAvailableMiniatures()
57 return videos.slice(0, numberOfVideos * 2)
61 if (this.currentPage >= this.maxPage) return
62 if (this.lastWasEmpty) return
63 if (this.isLoading) return
66 this.loadMoreResults()
69 private loadMoreResults () {
72 this.overviewService.getVideosOverview(this.currentPage)
75 this.isLoading = false
77 if (overview.tags.length === 0 && overview.channels.length === 0 && overview.categories.length === 0) {
78 this.lastWasEmpty = true
79 if (this.loaded === false) this.notResults = true
85 this.onDataSubject.next(overview)
87 this.overviews.push(overview)
91 this.notifier.error(err.message)
92 this.isLoading = false