From 419b520ca4434d17f3505013174e195c3a316716 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 19 Jan 2022 14:23:00 +0100 Subject: Add ability to cancel & delete video imports --- .../my-video-imports.component.html | 7 ++++--- .../my-video-imports/my-video-imports.component.ts | 24 ++++++++++++++++++++++ .../shared-main/buttons/button.component.html | 4 ++-- .../shared/shared-main/buttons/button.component.ts | 4 ---- .../shared-main/buttons/delete-button.component.ts | 4 ---- .../shared-main/video/video-import.service.ts | 10 +++++++++ client/src/sass/include/_mixins.scss | 6 +++++- 7 files changed, 45 insertions(+), 14 deletions(-) (limited to 'client/src') diff --git a/client/src/app/+my-library/my-video-imports/my-video-imports.component.html b/client/src/app/+my-library/my-video-imports/my-video-imports.component.html index bd29b11c8..e0d4e8f14 100644 --- a/client/src/app/+my-library/my-video-imports/my-video-imports.component.html +++ b/client/src/app/+my-library/my-video-imports/my-video-imports.component.html @@ -13,7 +13,7 @@ - Action + Action Target Video State @@ -28,8 +28,9 @@ - + + + diff --git a/client/src/app/+my-library/my-video-imports/my-video-imports.component.ts b/client/src/app/+my-library/my-video-imports/my-video-imports.component.ts index 914785bf7..f01558061 100644 --- a/client/src/app/+my-library/my-video-imports/my-video-imports.component.ts +++ b/client/src/app/+my-library/my-video-imports/my-video-imports.component.ts @@ -37,6 +37,8 @@ export class MyVideoImportsComponent extends RestTable implements OnInit { return 'badge-banned' case VideoImportState.PENDING: return 'badge-yellow' + case VideoImportState.PROCESSING: + return 'badge-blue' default: return 'badge-green' } @@ -54,6 +56,10 @@ export class MyVideoImportsComponent extends RestTable implements OnInit { return videoImport.state.id === VideoImportState.FAILED } + isVideoImportCancelled (videoImport: VideoImport) { + return videoImport.state.id === VideoImportState.CANCELLED + } + getVideoUrl (video: { uuid: string }) { return Video.buildWatchUrl(video) } @@ -62,6 +68,24 @@ export class MyVideoImportsComponent extends RestTable implements OnInit { return Video.buildUpdateUrl(video) } + deleteImport (videoImport: VideoImport) { + this.videoImportService.deleteVideoImport(videoImport) + .subscribe({ + next: () => this.reloadData(), + + error: err => this.notifier.error(err.message) + }) + } + + cancelImport (videoImport: VideoImport) { + this.videoImportService.cancelVideoImport(videoImport) + .subscribe({ + next: () => this.reloadData(), + + error: err => this.notifier.error(err.message) + }) + } + protected reloadData () { this.videoImportService.getMyVideoImports(this.pagination, this.sort) .subscribe({ diff --git a/client/src/app/shared/shared-main/buttons/button.component.html b/client/src/app/shared/shared-main/buttons/button.component.html index 65e06f7a4..11c8ffedd 100644 --- a/client/src/app/shared/shared-main/buttons/button.component.html +++ b/client/src/app/shared/shared-main/buttons/button.component.html @@ -1,5 +1,5 @@ - - + + {{ label }} diff --git a/client/src/app/shared/shared-main/buttons/button.component.ts b/client/src/app/shared/shared-main/buttons/button.component.ts index ee74b3d12..b97012d9a 100644 --- a/client/src/app/shared/shared-main/buttons/button.component.ts +++ b/client/src/app/shared/shared-main/buttons/button.component.ts @@ -16,10 +16,6 @@ export class ButtonComponent { @Input() disabled = false @Input() responsiveLabel = false - getTitle () { - return this.title || this.label - } - getClasses () { return { [this.className]: true, diff --git a/client/src/app/shared/shared-main/buttons/delete-button.component.ts b/client/src/app/shared/shared-main/buttons/delete-button.component.ts index c091f5309..90735852c 100644 --- a/client/src/app/shared/shared-main/buttons/delete-button.component.ts +++ b/client/src/app/shared/shared-main/buttons/delete-button.component.ts @@ -20,10 +20,6 @@ export class DeleteButtonComponent implements OnInit { // Use default label if (this.label === '') { this.label = $localize`Delete` - - if (!this.title) { - this.title = this.label - } } } } diff --git a/client/src/app/shared/shared-main/video/video-import.service.ts b/client/src/app/shared/shared-main/video/video-import.service.ts index 99df78e3a..0a610ab1f 100644 --- a/client/src/app/shared/shared-main/video/video-import.service.ts +++ b/client/src/app/shared/shared-main/video/video-import.service.ts @@ -56,6 +56,16 @@ export class VideoImportService { ) } + deleteVideoImport (videoImport: VideoImport) { + return this.authHttp.delete(VideoImportService.BASE_VIDEO_IMPORT_URL + videoImport.id) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + + cancelVideoImport (videoImport: VideoImport) { + return this.authHttp.post(VideoImportService.BASE_VIDEO_IMPORT_URL + videoImport.id + '/cancel', {}) + .pipe(catchError(err => this.restExtractor.handleError(err))) + } + private buildImportVideoObject (video: VideoUpdate): VideoImportCreate { const language = video.language || null const licence = video.licence || null diff --git a/client/src/sass/include/_mixins.scss b/client/src/sass/include/_mixins.scss index a7c4c99c2..c8ec3b4d1 100644 --- a/client/src/sass/include/_mixins.scss +++ b/client/src/sass/include/_mixins.scss @@ -257,7 +257,7 @@ } @mixin peertube-button { - @include padding(0, 17px, 0, 13px); + padding: 0 13px; border: 0; font-weight: $font-semibold; @@ -270,6 +270,10 @@ text-align: center; cursor: pointer; + + my-global-icon + * { + @include margin-right(4px); + } } @mixin peertube-button-link { -- cgit v1.2.3