]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - client/src/app/+signup/+register/register.component.ts
Added label on the next autoplayed video and hide the hr line if unnecessary (#4497)
[github/Chocobozzz/PeerTube.git] / client / src / app / +signup / +register / register.component.ts
CommitLineData
40360c17 1import { Component, OnInit } from '@angular/core'
1d5342ab 2import { FormGroup } from '@angular/forms'
67ed6552 3import { ActivatedRoute } from '@angular/router'
40360c17 4import { AuthService, UserService } from '@app/core'
ba7b7e57 5import { HooksService } from '@app/core/plugins/hooks.service'
421d935d 6import { NgbAccordion } from '@ng-bootstrap/ng-bootstrap'
67ed6552 7import { UserRegister } from '@shared/models'
40360c17
K
8import { ServerConfig } from '@shared/models/server'
9import { InstanceAboutAccordionComponent } from '@app/shared/shared-instance'
a184c71b
C
10
11@Component({
b247a132
C
12 selector: 'my-register',
13 templateUrl: './register.component.html',
14 styleUrls: [ './register.component.scss' ]
a184c71b 15})
421d935d 16export class RegisterComponent implements OnInit {
40360c17 17 accordion: NgbAccordion
d8c9996c 18 info: string = null
df98563e 19 error: string = null
1d5342ab 20 success: string = null
d8c9996c 21 signupDone = false
a184c71b 22
09c55770 23 videoUploadDisabled: boolean
24
40360c17 25 formStepTerms: FormGroup
1d5342ab
C
26 formStepUser: FormGroup
27 formStepChannel: FormGroup
28
40360c17
K
29 aboutHtml = {
30 codeOfConduct: ''
31 }
32
33 instanceInformationPanels = {
34 codeOfConduct: true,
35 terms: true,
36 administrators: false,
37 features: false,
38 moderation: false
39 }
40
e0fea785
RK
41 defaultPreviousStepButtonLabel = $localize`:Button on the registration form to go to the previous step:Back`
42 defaultNextStepButtonLabel = $localize`:Button on the registration form to go to the previous step:Next`
40360c17
K
43 stepUserButtonLabel = this.defaultNextStepButtonLabel
44
ba430d75
C
45 private serverConfig: ServerConfig
46
df98563e 47 constructor (
ba430d75 48 private route: ActivatedRoute,
43e9d2af 49 private authService: AuthService,
5afdd0a5 50 private userService: UserService,
66357162 51 private hooks: HooksService
9df52d66 52 ) { }
8a19bee1 53
d9eaee39 54 get requiresEmailVerification () {
ba430d75 55 return this.serverConfig.signup.requiresEmailVerification
d9eaee39
JM
56 }
57
1f256e7d
P
58 get minimumAge () {
59 return this.serverConfig.signup.minimumAge
60 }
61
421d935d 62 ngOnInit (): void {
ba430d75
C
63 this.serverConfig = this.route.snapshot.data.serverConfig
64
09c55770 65 this.videoUploadDisabled = this.serverConfig.user.videoQuota === 0
40360c17 66 this.stepUserButtonLabel = this.videoUploadDisabled
e0fea785 67 ? $localize`:Button on the registration form to finalize the account and channel creation:Signup`
40360c17 68 : this.defaultNextStepButtonLabel
ba7b7e57
RK
69
70 this.hooks.runAction('action:signup.register.init', 'signup')
40360c17 71
421d935d
C
72 }
73
1d5342ab
C
74 hasSameChannelAndAccountNames () {
75 return this.getUsername() === this.getChannelName()
76 }
77
78 getUsername () {
79 if (!this.formStepUser) return undefined
80
81 return this.formStepUser.value['username']
82 }
83
84 getChannelName () {
85 if (!this.formStepChannel) return undefined
86
87 return this.formStepChannel.value['name']
88 }
89
40360c17
K
90 onTermsFormBuilt (form: FormGroup) {
91 this.formStepTerms = form
92 }
93
1d5342ab
C
94 onUserFormBuilt (form: FormGroup) {
95 this.formStepUser = form
96 }
97
98 onChannelFormBuilt (form: FormGroup) {
99 this.formStepChannel = form
a184c71b
C
100 }
101
421d935d
C
102 onTermsClick () {
103 if (this.accordion) this.accordion.toggle('terms')
104 }
105
106 onCodeOfConductClick () {
107 if (this.accordion) this.accordion.toggle('code-of-conduct')
108 }
109
40360c17
K
110 onInstanceAboutAccordionInit (instanceAboutAccordion: InstanceAboutAccordionComponent) {
111 this.accordion = instanceAboutAccordion.accordion
112 this.aboutHtml = instanceAboutAccordion.aboutHtml
113 }
114
ba7b7e57 115 async signup () {
df98563e 116 this.error = null
a184c71b 117
ba7b7e57 118 const body: UserRegister = await this.hooks.wrapObject(
09c55770 119 Object.assign(this.formStepUser.value, { channel: this.videoUploadDisabled ? undefined : this.formStepChannel.value }),
0912f1b4 120 'signup',
ba7b7e57
RK
121 'filter:api.signup.registration.create.params'
122 )
a184c71b 123
1378c0d3
C
124 this.userService.signup(body).subscribe({
125 next: () => {
d8c9996c
C
126 this.signupDone = true
127
d9eaee39 128 if (this.requiresEmailVerification) {
66357162 129 this.info = $localize`Now please check your emails to verify your account and complete signup.`
d8c9996c 130 return
d9eaee39 131 }
d8c9996c 132
43e9d2af 133 // Auto login
1d5342ab 134 this.authService.login(body.username, body.password)
1378c0d3
C
135 .subscribe({
136 next: () => {
137 this.success = $localize`You are now logged in as ${body.username}!`
138 },
43e9d2af 139
9df52d66
C
140 error: err => {
141 this.error = err.message
142 }
1378c0d3 143 })
a184c71b
C
144 },
145
9df52d66
C
146 error: err => {
147 this.error = err.message
148 }
1378c0d3 149 })
a184c71b
C
150 }
151}