aboutsummaryrefslogtreecommitdiffhomepage
path: root/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts
diff options
context:
space:
mode:
Diffstat (limited to 'client/src/app/+my-account/my-account-videos/my-account-videos.component.ts')
-rw-r--r--client/src/app/+my-account/my-account-videos/my-account-videos.component.ts47
1 files changed, 14 insertions, 33 deletions
diff --git a/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts b/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts
index 41608f796..eb5096a5e 100644
--- a/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts
+++ b/client/src/app/+my-account/my-account-videos/my-account-videos.component.ts
@@ -1,11 +1,10 @@
1import { from as observableFrom, Observable } from 'rxjs' 1import { concat, Observable } from 'rxjs'
2import { concatAll, tap } from 'rxjs/operators' 2import { tap, toArray } from 'rxjs/operators'
3import { Component, OnDestroy, OnInit, Inject, LOCALE_ID, ViewChild } from '@angular/core' 3import { Component, Inject, LOCALE_ID, OnDestroy, OnInit, ViewChild } from '@angular/core'
4import { ActivatedRoute, Router } from '@angular/router' 4import { ActivatedRoute, Router } from '@angular/router'
5import { Location } from '@angular/common'
6import { immutableAssign } from '@app/shared/misc/utils' 5import { immutableAssign } from '@app/shared/misc/utils'
7import { ComponentPagination } from '@app/shared/rest/component-pagination.model' 6import { ComponentPagination } from '@app/shared/rest/component-pagination.model'
8import { Notifier } from '@app/core' 7import { Notifier, ServerService } from '@app/core'
9import { AuthService } from '../../core/auth' 8import { AuthService } from '../../core/auth'
10import { ConfirmService } from '../../core/confirm' 9import { ConfirmService } from '../../core/confirm'
11import { AbstractVideoList } from '../../shared/video/abstract-video-list' 10import { AbstractVideoList } from '../../shared/video/abstract-video-list'
@@ -22,8 +21,9 @@ import { VideoChangeOwnershipComponent } from './video-change-ownership/video-ch
22 styleUrls: [ './my-account-videos.component.scss' ] 21 styleUrls: [ './my-account-videos.component.scss' ]
23}) 22})
24export class MyAccountVideosComponent extends AbstractVideoList implements OnInit, OnDestroy { 23export class MyAccountVideosComponent extends AbstractVideoList implements OnInit, OnDestroy {
24 @ViewChild('videoChangeOwnershipModal') videoChangeOwnershipModal: VideoChangeOwnershipComponent
25
25 titlePage: string 26 titlePage: string
26 currentRoute = '/my-account/videos'
27 checkedVideos: { [ id: number ]: boolean } = {} 27 checkedVideos: { [ id: number ]: boolean } = {}
28 pagination: ComponentPagination = { 28 pagination: ComponentPagination = {
29 currentPage: 1, 29 currentPage: 1,
@@ -31,19 +31,14 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni
31 totalItems: null 31 totalItems: null
32 } 32 }
33 33
34 protected baseVideoWidth = -1
35 protected baseVideoHeight = 155
36
37 @ViewChild('videoChangeOwnershipModal') videoChangeOwnershipModal: VideoChangeOwnershipComponent
38
39 constructor ( 34 constructor (
40 protected router: Router, 35 protected router: Router,
36 protected serverService: ServerService,
41 protected route: ActivatedRoute, 37 protected route: ActivatedRoute,
42 protected authService: AuthService, 38 protected authService: AuthService,
43 protected notifier: Notifier, 39 protected notifier: Notifier,
44 protected location: Location,
45 protected screenService: ScreenService, 40 protected screenService: ScreenService,
46 protected i18n: I18n, 41 private i18n: I18n,
47 private confirmService: ConfirmService, 42 private confirmService: ConfirmService,
48 private videoService: VideoService, 43 private videoService: VideoService,
49 @Inject(LOCALE_ID) private localeId: string 44 @Inject(LOCALE_ID) private localeId: string
@@ -93,19 +88,18 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni
93 const observables: Observable<any>[] = [] 88 const observables: Observable<any>[] = []
94 for (const videoId of toDeleteVideosIds) { 89 for (const videoId of toDeleteVideosIds) {
95 const o = this.videoService.removeVideo(videoId) 90 const o = this.videoService.removeVideo(videoId)
96 .pipe(tap(() => this.spliceVideosById(videoId))) 91 .pipe(tap(() => this.removeVideoFromArray(videoId)))
97 92
98 observables.push(o) 93 observables.push(o)
99 } 94 }
100 95
101 observableFrom(observables) 96 concat(...observables)
102 .pipe(concatAll()) 97 .pipe(toArray())
103 .subscribe( 98 .subscribe(
104 res => { 99 () => {
105 this.notifier.success(this.i18n('{{deleteLength}} videos deleted.', { deleteLength: toDeleteVideosIds.length })) 100 this.notifier.success(this.i18n('{{deleteLength}} videos deleted.', { deleteLength: toDeleteVideosIds.length }))
106 101
107 this.abortSelectionMode() 102 this.abortSelectionMode()
108 this.reloadVideos()
109 }, 103 },
110 104
111 err => this.notifier.error(err.message) 105 err => this.notifier.error(err.message)
@@ -156,20 +150,7 @@ export class MyAccountVideosComponent extends AbstractVideoList implements OnIni
156 return ' - ' + suffix 150 return ' - ' + suffix
157 } 151 }
158 152
159 protected buildVideoHeight () { 153 private removeVideoFromArray (id: number) {
160 // In account videos, the video height is fixed 154 this.videos = this.videos.filter(v => v.id !== id)
161 return this.baseVideoHeight
162 }
163
164 private spliceVideosById (id: number) {
165 for (const key of Object.keys(this.loadedPages)) {
166 const videos: Video[] = this.loadedPages[ key ]
167 const index = videos.findIndex(v => v.id === id)
168
169 if (index !== -1) {
170 videos.splice(index, 1)
171 return
172 }
173 }
174 } 155 }
175} 156}