]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/+my-library/my-video-imports/my-video-imports.component.ts
Add ability to list imports of a channel sync
[github/Chocobozzz/PeerTube.git] / client / src / app / +my-library / my-video-imports / my-video-imports.component.ts
CommitLineData
f77eb73b 1import { SortMeta } from 'primeng/api'
67ed6552
C
2import { Component, OnInit } from '@angular/core'
3import { Notifier, RestPagination, RestTable } from '@app/core'
d4a8e7a6 4import { Video, VideoImportService } from '@app/shared/shared-main'
67ed6552 5import { VideoImport, VideoImportState } from '@shared/models'
ed31c059
C
6
7@Component({
17119e4a
C
8 templateUrl: './my-video-imports.component.html',
9 styleUrls: [ './my-video-imports.component.scss' ]
ed31c059 10})
17119e4a 11export class MyVideoImportsComponent extends RestTable implements OnInit {
ed31c059
C
12 videoImports: VideoImport[] = []
13 totalRecords = 0
ed31c059
C
14 sort: SortMeta = { field: 'createdAt', order: 1 }
15 pagination: RestPagination = { count: this.rowsPerPage, start: 0 }
16
17 constructor (
f8b2c1b4 18 private notifier: Notifier,
8e11a1b3 19 private videoImportService: VideoImportService
ed31c059
C
20 ) {
21 super()
22 }
23
24 ngOnInit () {
24b9417c 25 this.initialize()
ed31c059
C
26 }
27
8e11a1b3 28 getIdentifier () {
17119e4a 29 return 'MyVideoImportsComponent'
8e11a1b3
C
30 }
31
4f5d0459
RK
32 getVideoImportStateClass (state: VideoImportState) {
33 switch (state) {
34 case VideoImportState.FAILED:
35 return 'badge-red'
a3b472a1 36
4f5d0459
RK
37 case VideoImportState.REJECTED:
38 return 'badge-banned'
a3b472a1 39
4f5d0459
RK
40 case VideoImportState.PENDING:
41 return 'badge-yellow'
a3b472a1 42
419b520c
C
43 case VideoImportState.PROCESSING:
44 return 'badge-blue'
a3b472a1 45
4f5d0459
RK
46 default:
47 return 'badge-green'
48 }
49 }
50
ed31c059
C
51 isVideoImportSuccess (videoImport: VideoImport) {
52 return videoImport.state.id === VideoImportState.SUCCESS
53 }
54
55 isVideoImportPending (videoImport: VideoImport) {
56 return videoImport.state.id === VideoImportState.PENDING
57 }
58
59 isVideoImportFailed (videoImport: VideoImport) {
60 return videoImport.state.id === VideoImportState.FAILED
61 }
62
419b520c
C
63 isVideoImportCancelled (videoImport: VideoImport) {
64 return videoImport.state.id === VideoImportState.CANCELLED
65 }
66
ed31c059 67 getVideoUrl (video: { uuid: string }) {
d4a8e7a6 68 return Video.buildWatchUrl(video)
ed31c059
C
69 }
70
71 getEditVideoUrl (video: { uuid: string }) {
d4a8e7a6 72 return Video.buildUpdateUrl(video)
ed31c059
C
73 }
74
419b520c
C
75 deleteImport (videoImport: VideoImport) {
76 this.videoImportService.deleteVideoImport(videoImport)
77 .subscribe({
78 next: () => this.reloadData(),
79
80 error: err => this.notifier.error(err.message)
81 })
82 }
83
84 cancelImport (videoImport: VideoImport) {
85 this.videoImportService.cancelVideoImport(videoImport)
86 .subscribe({
87 next: () => this.reloadData(),
88
89 error: err => this.notifier.error(err.message)
90 })
91 }
92
2e46eb97 93 protected reloadData () {
a3b472a1 94 this.videoImportService.getMyVideoImports(this.pagination, this.sort, this.search)
1378c0d3
C
95 .subscribe({
96 next: resultList => {
ed31c059
C
97 this.videoImports = resultList.data
98 this.totalRecords = resultList.total
99 },
100
1378c0d3
C
101 error: err => this.notifier.error(err.message)
102 })
ed31c059
C
103 }
104}