From d846d99c6c81028bb7bd3cb20abd433cbf396a22 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 28 Oct 2020 10:49:20 +0100 Subject: Add modal to display live information --- .../modals/video-change-ownership.component.ts | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 client/src/app/+my-account/my-account-videos/modals/video-change-ownership.component.ts (limited to 'client/src/app/+my-account/my-account-videos/modals/video-change-ownership.component.ts') diff --git a/client/src/app/+my-account/my-account-videos/modals/video-change-ownership.component.ts b/client/src/app/+my-account/my-account-videos/modals/video-change-ownership.component.ts new file mode 100644 index 000000000..84237dee1 --- /dev/null +++ b/client/src/app/+my-account/my-account-videos/modals/video-change-ownership.component.ts @@ -0,0 +1,69 @@ +import { Component, ElementRef, OnInit, ViewChild } from '@angular/core' +import { Notifier, UserService } from '@app/core' +import { OWNERSHIP_CHANGE_USERNAME_VALIDATOR } from '@app/shared/form-validators/video-ownership-change-validators' +import { FormReactive, FormValidatorService } from '@app/shared/shared-forms' +import { Video, VideoOwnershipService } from '@app/shared/shared-main' +import { NgbModal } from '@ng-bootstrap/ng-bootstrap' + +@Component({ + selector: 'my-video-change-ownership', + templateUrl: './video-change-ownership.component.html', + styleUrls: [ './video-change-ownership.component.scss' ] +}) +export class VideoChangeOwnershipComponent extends FormReactive implements OnInit { + @ViewChild('modal', { static: true }) modal: ElementRef + + usernamePropositions: string[] + + error: string = null + + private video: Video | undefined = undefined + + constructor ( + protected formValidatorService: FormValidatorService, + private videoOwnershipService: VideoOwnershipService, + private notifier: Notifier, + private userService: UserService, + private modalService: NgbModal + ) { + super() + } + + ngOnInit () { + this.buildForm({ + username: OWNERSHIP_CHANGE_USERNAME_VALIDATOR + }) + this.usernamePropositions = [] + } + + show (video: Video) { + this.video = video + this.modalService + .open(this.modal, { centered: true }) + .result + .then(() => this.changeOwnership()) + .catch((_) => _) // Called when closing (cancel) the modal without validating, do nothing + } + + search (event: { query: string }) { + const query = event.query + this.userService.autocomplete(query) + .subscribe( + usernames => this.usernamePropositions = usernames, + + err => this.notifier.error(err.message) + ) + } + + changeOwnership () { + const username = this.form.value['username'] + + this.videoOwnershipService + .changeOwnership(this.video.id, username) + .subscribe( + () => this.notifier.success($localize`Ownership change request sent.`), + + err => this.notifier.error(err.message) + ) + } +} -- cgit v1.2.3