diff options
Diffstat (limited to 'client/src/app/account/account-details')
3 files changed, 85 insertions, 0 deletions
diff --git a/client/src/app/account/account-details/account-details.component.html b/client/src/app/account/account-details/account-details.component.html new file mode 100644 index 000000000..24b0750d2 --- /dev/null +++ b/client/src/app/account/account-details/account-details.component.html | |||
@@ -0,0 +1,16 @@ | |||
1 | <div *ngIf="error" class="alert alert-danger">{{ error }}</div> | ||
2 | |||
3 | <form role="form" (ngSubmit)="updateDetails()" [formGroup]="form"> | ||
4 | <div class="form-group"> | ||
5 | <label for="displayNSFW">Display NSFW videos</label> | ||
6 | <input | ||
7 | type="checkbox" id="displayNSFW" | ||
8 | formControlName="displayNSFW" | ||
9 | > | ||
10 | <div *ngIf="formErrors['displayNSFW']" class="alert alert-danger"> | ||
11 | {{ formErrors['displayNSFW'] }} | ||
12 | </div> | ||
13 | </div> | ||
14 | |||
15 | <input type="submit" value="Update" class="btn btn-default" [disabled]="!form.valid"> | ||
16 | </form> | ||
diff --git a/client/src/app/account/account-details/account-details.component.ts b/client/src/app/account/account-details/account-details.component.ts new file mode 100644 index 000000000..30e5b14ee --- /dev/null +++ b/client/src/app/account/account-details/account-details.component.ts | |||
@@ -0,0 +1,68 @@ | |||
1 | import { Component, OnInit, Input } from '@angular/core'; | ||
2 | import { FormBuilder, FormGroup } from '@angular/forms'; | ||
3 | import { Router } from '@angular/router'; | ||
4 | |||
5 | import { NotificationsService } from 'angular2-notifications'; | ||
6 | |||
7 | import { AuthService } from '../../core'; | ||
8 | import { | ||
9 | FormReactive, | ||
10 | User, | ||
11 | UserService, | ||
12 | USER_PASSWORD | ||
13 | } from '../../shared'; | ||
14 | |||
15 | @Component({ | ||
16 | selector: 'my-account-details', | ||
17 | templateUrl: './account-details.component.html' | ||
18 | }) | ||
19 | |||
20 | export class AccountDetailsComponent extends FormReactive implements OnInit { | ||
21 | @Input() user: User = null; | ||
22 | |||
23 | error: string = null; | ||
24 | |||
25 | form: FormGroup; | ||
26 | formErrors = {}; | ||
27 | validationMessages = {}; | ||
28 | |||
29 | constructor( | ||
30 | private authService: AuthService, | ||
31 | private formBuilder: FormBuilder, | ||
32 | private router: Router, | ||
33 | private notificationsService: NotificationsService, | ||
34 | private userService: UserService | ||
35 | ) { | ||
36 | super(); | ||
37 | } | ||
38 | |||
39 | buildForm() { | ||
40 | this.form = this.formBuilder.group({ | ||
41 | displayNSFW: [ this.user.displayNSFW ], | ||
42 | }); | ||
43 | |||
44 | this.form.valueChanges.subscribe(data => this.onValueChanged(data)); | ||
45 | } | ||
46 | |||
47 | ngOnInit() { | ||
48 | this.buildForm(); | ||
49 | } | ||
50 | |||
51 | updateDetails() { | ||
52 | const displayNSFW = this.form.value['displayNSFW']; | ||
53 | const details = { | ||
54 | displayNSFW | ||
55 | }; | ||
56 | |||
57 | this.error = null; | ||
58 | this.userService.updateDetails(details).subscribe( | ||
59 | () => { | ||
60 | this.notificationsService.success('Success', 'Informations updated.'); | ||
61 | |||
62 | this.authService.refreshUserInformations(); | ||
63 | }, | ||
64 | |||
65 | err => this.error = err | ||
66 | ); | ||
67 | } | ||
68 | } | ||
diff --git a/client/src/app/account/account-details/index.ts b/client/src/app/account/account-details/index.ts new file mode 100644 index 000000000..28f644738 --- /dev/null +++ b/client/src/app/account/account-details/index.ts | |||
@@ -0,0 +1 @@ | |||
export * from './account-details.component'; | |||