]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - client/src/app/+video-channels/video-channel-videos/video-channel-videos.component.ts
Fix NSFW policy on account/channel videos
[github/Chocobozzz/PeerTube.git] / client / src / app / +video-channels / video-channel-videos / video-channel-videos.component.ts
index 599d38da9572c61851031d43a9bd933685e0fc9c..8036515058040c80a213e8e21cdfbd3fbe9c46a8 100644 (file)
@@ -1,12 +1,12 @@
-import { Subscription } from 'rxjs'
+import { forkJoin, 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',
@@ -18,12 +18,14 @@ import { I18n } from '@ngx-translate/i18n-polyfill'
 export class VideoChannelVideosComponent extends AbstractVideoList implements OnInit, OnDestroy {
   titlePage: string
   loadOnInit = false
+  loadUserVideoPreferences = true
+
+  filter: VideoFilter = null
 
   private videoChannel: VideoChannel
   private videoChannelSub: Subscription
 
   constructor (
-    protected i18n: I18n,
     protected router: Router,
     protected serverService: ServerService,
     protected route: ActivatedRoute,
@@ -33,12 +35,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
@@ -48,15 +51,18 @@ 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())
-                               .subscribe(videoChannel => {
-                                 this.videoChannel = videoChannel
-
-                                 this.reloadVideos()
-                                 this.generateSyndicationList()
-                               })
+    this.videoChannelSub = forkJoin([
+      this.videoChannelService.videoChannelLoaded.pipe(first()),
+      this.onUserLoadedSubject.pipe(first())
+    ]).subscribe(([ videoChannel ]) => {
+      this.videoChannel = videoChannel
+
+      this.reloadVideos()
+      this.generateSyndicationList()
+    })
   }
 
   ngOnDestroy () {
@@ -67,12 +73,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`
                  })
                )
   }
@@ -80,4 +95,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()
+  }
 }