X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Babout%2Fabout-instance%2Fcontact-admin-modal.component.ts;h=37e9feacb0951896af18f884b2e690aeea92626d;hb=c0e8b12e7fd554ba4d2ceb0c4900804c6a4c63ea;hp=d5e146b8262c4c2bbd9d19fda6d516da6dffcf18;hpb=2ad9dcda240ee843c5e4a5b98cc94f7b2aab2c89;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+about/about-instance/contact-admin-modal.component.ts b/client/src/app/+about/about-instance/contact-admin-modal.component.ts index d5e146b82..37e9feacb 100644 --- a/client/src/app/+about/about-instance/contact-admin-modal.component.ts +++ b/client/src/app/+about/about-instance/contact-admin-modal.component.ts @@ -1,12 +1,22 @@ import { Component, OnInit, ViewChild } from '@angular/core' +import { Router } from '@angular/router' import { Notifier, ServerService } from '@app/core' -import { I18n } from '@ngx-translate/i18n-polyfill' -import { FormValidatorService } from '@app/shared/forms/form-validators/form-validator.service' +import { + BODY_VALIDATOR, + FROM_EMAIL_VALIDATOR, + FROM_NAME_VALIDATOR, + SUBJECT_VALIDATOR +} from '@app/shared/form-validators/instance-validators' +import { FormReactive, FormValidatorService } from '@app/shared/shared-forms' +import { InstanceService } from '@app/shared/shared-instance' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref' -import { FormReactive, InstanceValidatorsService } from '@app/shared' -import { InstanceService } from '@app/shared/instance/instance.service' -import { ServerConfig } from '@shared/models' +import { HTMLServerConfig, HttpStatusCode } from '@shared/models' + +type Prefill = { + subject?: string + body?: string +} @Component({ selector: 'my-contact-admin-modal', @@ -19,16 +29,15 @@ export class ContactAdminModalComponent extends FormReactive implements OnInit { error: string private openedModal: NgbModalRef - private serverConfig: ServerConfig + private serverConfig: HTMLServerConfig constructor ( protected formValidatorService: FormValidatorService, + private router: Router, private modalService: NgbModal, - private instanceValidatorsService: InstanceValidatorsService, private instanceService: InstanceService, private serverService: ServerService, - private notifier: Notifier, - private i18n: I18n + private notifier: Notifier ) { super() } @@ -38,20 +47,25 @@ export class ContactAdminModalComponent extends FormReactive implements OnInit { } ngOnInit () { - this.serverConfig = this.serverService.getTmpConfig() - this.serverService.getConfig() - .subscribe(config => this.serverConfig = config) + this.serverConfig = this.serverService.getHTMLConfig() this.buildForm({ - fromName: this.instanceValidatorsService.FROM_NAME, - fromEmail: this.instanceValidatorsService.FROM_EMAIL, - subject: this.instanceValidatorsService.SUBJECT, - body: this.instanceValidatorsService.BODY + fromName: FROM_NAME_VALIDATOR, + fromEmail: FROM_EMAIL_VALIDATOR, + subject: SUBJECT_VALIDATOR, + body: BODY_VALIDATOR }) } - show () { + isContactFormEnabled () { + return this.serverConfig.email.enabled && this.serverConfig.contactForm.enabled + } + + show (prefill: Prefill = {}) { this.openedModal = this.modalService.open(this.modal, { centered: true, keyboard: false }) + + this.openedModal.shown.subscribe(() => this.prefillForm(prefill)) + this.openedModal.result.finally(() => this.router.navigateByUrl('/about/instance')) } hide () { @@ -63,7 +77,7 @@ export class ContactAdminModalComponent extends FormReactive implements OnInit { } sendForm () { - const fromName = this.form.value['fromName'] + const fromName = this.form.value[ 'fromName' ] const fromEmail = this.form.value[ 'fromEmail' ] const subject = this.form.value[ 'subject' ] const body = this.form.value[ 'body' ] @@ -71,15 +85,25 @@ export class ContactAdminModalComponent extends FormReactive implements OnInit { this.instanceService.contactAdministrator(fromEmail, fromName, subject, body) .subscribe( () => { - this.notifier.success(this.i18n('Your message has been sent.')) + this.notifier.success($localize`Your message has been sent.`) this.hide() }, err => { - this.error = err.status === 403 - ? this.i18n('You already sent this form recently') + this.error = err.status === HttpStatusCode.FORBIDDEN_403 + ? $localize`You already sent this form recently` : err.message } ) } + + private prefillForm (prefill: Prefill) { + if (prefill.subject) { + this.form.get('subject').setValue(prefill.subject) + } + + if (prefill.body) { + this.form.get('body').setValue(prefill.body) + } + } }