]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts
modularize abstract video list header and implement video hotness recommendation...
[github/Chocobozzz/PeerTube.git] / client / src / app / +video-channels / video-channel-videos / video-channel-videos.component.ts
index 267c328f2ab2fd0d27c7e3df30d2e3295ef7657b..a49fd0d5ddf79d6d5a87d6bb45c9046e0423a063 100644 (file)
@@ -1,30 +1,30 @@
 import { Subscription } from 'rxjs'
 import { first, tap } from 'rxjs/operators'
-import { Component, OnDestroy, OnInit } from '@angular/core'
+import { Component, ComponentFactoryResolver, OnDestroy, OnInit } from '@angular/core'
 import { ActivatedRoute, Router } from '@angular/router'
 import { AuthService, ConfirmService, LocalStorageService, Notifier, ScreenService, ServerService, UserService } from '@app/core'
 import { immutableAssign } from '@app/helpers'
 import { VideoChannel, VideoChannelService, VideoService } from '@app/shared/shared-main'
 import { AbstractVideoList } from '@app/shared/shared-video-miniature'
-import { I18n } from '@ngx-translate/i18n-polyfill'
+import { VideoFilter } from '@shared/models'
 
 @Component({
   selector: 'my-video-channel-videos',
   templateUrl: '../../shared/shared-video-miniature/abstract-video-list.html',
   styleUrls: [
-    '../../shared/shared-video-miniature/abstract-video-list.scss',
-    './video-channel-videos.component.scss'
+    '../../shared/shared-video-miniature/abstract-video-list.scss'
   ]
 })
 export class VideoChannelVideosComponent extends AbstractVideoList implements OnInit, OnDestroy {
   titlePage: string
   loadOnInit = false
 
+  filter: VideoFilter = null
+
   private videoChannel: VideoChannel
   private videoChannelSub: Subscription
 
   constructor (
-    protected i18n: I18n,
     protected router: Router,
     protected serverService: ServerService,
     protected route: ActivatedRoute,
@@ -34,12 +34,13 @@ export class VideoChannelVideosComponent extends AbstractVideoList implements On
     protected confirmService: ConfirmService,
     protected screenService: ScreenService,
     protected storageService: LocalStorageService,
+    protected cfr: ComponentFactoryResolver,
     private videoChannelService: VideoChannelService,
     private videoService: VideoService
   ) {
     super()
 
-    this.titlePage = this.i18n('Published videos')
+    this.titlePage = $localize`Published videos`
     this.displayOptions = {
       ...this.displayOptions,
       avatar: false
@@ -49,6 +50,8 @@ export class VideoChannelVideosComponent extends AbstractVideoList implements On
   ngOnInit () {
     super.ngOnInit()
 
+    this.enableAllFilterIfPossible()
+
     // Parent get the video channel for us
     this.videoChannelSub = this.videoChannelService.videoChannelLoaded
                                .pipe(first())
@@ -68,12 +71,21 @@ export class VideoChannelVideosComponent extends AbstractVideoList implements On
 
   getVideosObservable (page: number) {
     const newPagination = immutableAssign(this.pagination, { currentPage: page })
+    const options = {
+      videoChannel: this.videoChannel,
+      videoPagination: newPagination,
+      sort: this.sort,
+      nsfwPolicy: this.nsfwPolicy,
+      videoFilter: this.filter
+    }
 
     return this.videoService
-               .getVideoChannelVideos(this.videoChannel, newPagination, this.sort, this.nsfwPolicy)
+               .getVideoChannelVideos(options)
                .pipe(
                  tap(({ total }) => {
-                   this.titlePage = this.i18n(`{total, plural, =1 {Published 1 video} other {Published {{total}} videos}}`, { total })
+                   this.titlePage = total === 1
+                    ? $localize`Published 1 video`
+                    : $localize`Published ${total} videos`
                  })
                )
   }
@@ -81,4 +93,10 @@ export class VideoChannelVideosComponent extends AbstractVideoList implements On
   generateSyndicationList () {
     this.syndicationItems = this.videoService.getVideoChannelFeedUrls(this.videoChannel.id)
   }
+
+  toggleModerationDisplay () {
+    this.filter = this.buildLocalFilter(this.filter, null)
+
+    this.reloadVideos()
+  }
 }