X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=client%2Fsrc%2Fapp%2F%2Bsignup%2F%2Bregister%2Fregister.component.ts;h=4ab327b1bfdffd239c744d9facee701b951eb546;hb=3267d381f4fdd128b2f948670b2e2ba765145276;hp=ae944ec15b57594f4ca605a7e06b3ce6c9414d6c;hpb=ba430d7516bc5b1324b60571ba7594460969b7fb;p=github%2FChocobozzz%2FPeerTube.git diff --git a/client/src/app/+signup/+register/register.component.ts b/client/src/app/+signup/+register/register.component.ts index ae944ec15..4ab327b1b 100644 --- a/client/src/app/+signup/+register/register.component.ts +++ b/client/src/app/+signup/+register/register.component.ts @@ -1,14 +1,14 @@ +import { CdkStep } from '@angular/cdk/stepper' import { Component, OnInit, ViewChild } from '@angular/core' -import { AuthService, Notifier, RedirectService, ServerService } from '@app/core' -import { UserService, UserValidatorsService } from '@app/shared' -import { I18n } from '@ngx-translate/i18n-polyfill' -import { UserRegister } from '@shared/models/users/user-register.model' import { FormGroup } from '@angular/forms' -import { About, ServerConfig } from '@shared/models/server' -import { InstanceService } from '@app/shared/instance/instance.service' +import { ActivatedRoute } from '@angular/router' +import { AuthService } from '@app/core' import { HooksService } from '@app/core/plugins/hooks.service' +import { InstanceAboutAccordionComponent } from '@app/shared/shared-instance' +import { UserSignupService } from '@app/shared/shared-users' import { NgbAccordion } from '@ng-bootstrap/ng-bootstrap' -import { ActivatedRoute } from '@angular/router' +import { UserRegister } from '@shared/models' +import { ServerConfig } from '@shared/models/server' @Component({ selector: 'my-register', @@ -16,60 +16,76 @@ import { ActivatedRoute } from '@angular/router' styleUrls: [ './register.component.scss' ] }) export class RegisterComponent implements OnInit { - @ViewChild('accordion', { static: true }) accordion: NgbAccordion + @ViewChild('lastStep') lastStep: CdkStep - info: string = null - error: string = null - success: string = null - signupDone = false + accordion: NgbAccordion - about: About - aboutHtml = { - description: '', - terms: '', - codeOfConduct: '', - moderationInformation: '', - administrator: '' - } + signupError: string + signupSuccess = false + videoUploadDisabled: boolean + videoQuota: number + + formStepTerms: FormGroup formStepUser: FormGroup formStepChannel: FormGroup + aboutHtml = { + codeOfConduct: '' + } + + instanceInformationPanels = { + codeOfConduct: true, + terms: true, + administrators: false, + features: false, + moderation: false + } + + defaultPreviousStepButtonLabel = $localize`Go to the previous step` + defaultNextStepButtonLabel = $localize`Go to the next step` + stepUserButtonLabel = this.defaultNextStepButtonLabel + + signupDisabled = false + private serverConfig: ServerConfig constructor ( private route: ActivatedRoute, private authService: AuthService, - private userValidatorsService: UserValidatorsService, - private notifier: Notifier, - private userService: UserService, - private serverService: ServerService, - private redirectService: RedirectService, - private instanceService: InstanceService, - private hooks: HooksService, - private i18n: I18n - ) { - } + private userSignupService: UserSignupService, + private hooks: HooksService + ) { } get requiresEmailVerification () { return this.serverConfig.signup.requiresEmailVerification } - ngOnInit (): void { + get minimumAge () { + return this.serverConfig.signup.minimumAge + } + + get instanceName () { + return this.serverConfig.instance.name + } + + ngOnInit () { this.serverConfig = this.route.snapshot.data.serverConfig - this.instanceService.getAbout() - .subscribe( - async about => { - this.about = about + if (this.serverConfig.signup.allowed === false || this.serverConfig.signup.allowedForCurrentIP === false) { + this.signupDisabled = true + return + } - this.aboutHtml = await this.instanceService.buildHtml(about) - }, + this.videoQuota = this.serverConfig.user.videoQuota + this.videoUploadDisabled = this.videoQuota === 0 - err => this.notifier.error(err.message) - ) + this.stepUserButtonLabel = this.videoUploadDisabled + ? $localize`:Button on the registration form to finalize the account and channel creation:Signup` + : this.defaultNextStepButtonLabel this.hooks.runAction('action:signup.register.init', 'signup') + } hasSameChannelAndAccountNames () { @@ -88,6 +104,10 @@ export class RegisterComponent implements OnInit { return this.formStepChannel.value['name'] } + onTermsFormBuilt (form: FormGroup) { + this.formStepTerms = form + } + onUserFormBuilt (form: FormGroup) { this.formStepUser = form } @@ -104,36 +124,55 @@ export class RegisterComponent implements OnInit { if (this.accordion) this.accordion.toggle('code-of-conduct') } + onInstanceAboutAccordionInit (instanceAboutAccordion: InstanceAboutAccordionComponent) { + this.accordion = instanceAboutAccordion.accordion + this.aboutHtml = instanceAboutAccordion.aboutHtml + } + + skipChannelCreation () { + this.formStepChannel.reset() + this.lastStep.select() + this.signup() + } + async signup () { - this.error = null + this.signupError = undefined const body: UserRegister = await this.hooks.wrapObject( - Object.assign(this.formStepUser.value, { channel: this.formStepChannel.value }), + { + ...this.formStepUser.value, + + channel: this.formStepChannel?.value?.name + ? this.formStepChannel.value + : undefined + }, 'signup', 'filter:api.signup.registration.create.params' ) - this.userService.signup(body).subscribe( - () => { - this.signupDone = true - + this.userSignupService.signup(body).subscribe({ + next: () => { if (this.requiresEmailVerification) { - this.info = this.i18n('Now please check your emails to verify your account and complete signup.') + this.signupSuccess = true return } // Auto login this.authService.login(body.username, body.password) - .subscribe( - () => { - this.success = this.i18n('You are now logged in as {{username}}!', { username: body.username }) - }, - - err => this.error = err.message - ) + .subscribe({ + next: () => { + this.signupSuccess = true + }, + + error: err => { + this.signupError = err.message + } + }) }, - err => this.error = err.message - ) + error: err => { + this.signupError = err.message + } + }) } }