h-usersite/angular/src/app/pages/account/user-data/user-data.component.ts
gofnnp b92b1e73ce dev #12797
Добавил обновление карты при обновлении данных пользователя
2022-10-16 22:24:38 +04:00

103 lines
3.1 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { MessageService } from 'primeng/api';
import { lastValueFrom } from 'rxjs';
import { UserDataForm } from 'src/app/interface/data';
import { AppleWalletService } from 'src/app/services/apple-wallet.service';
import { JsonrpcService, RpcService } from 'src/app/services/jsonrpc.service';
@Component({
selector: 'app-user-data',
templateUrl: './user-data.component.html',
styleUrls: ['./user-data.component.scss']
})
export class UserDataComponent implements OnInit {
public userDataFormGroup!: FormGroup;
public userData: UserDataForm = {
first_name: '',
birthdate: '',
gender: '',
}
constructor(
private jsonRpcService: JsonrpcService,
private messageService: MessageService,
private appleWallet: AppleWalletService,
private jsonrpc: JsonrpcService,
) { }
ngOnInit(): void {
this.createUserDataForm({...this.userData})
this.jsonRpcService.rpc({
method: 'getAdditionalInfo',
params: []
}, RpcService.authService, true).subscribe({
next: (res) => {
const { first_name, birthdate, gender } = res.data
this.userData = { first_name, birthdate, gender }
this.createUserDataForm({...this.userData})
},
error: (err) => {
console.error('Error: ', err)
}
});
}
createUserDataForm(val: UserDataForm) {
this.userDataFormGroup = new FormGroup({
first_name: new FormControl(val.first_name, [Validators.required, Validators.minLength(2)]),
birthdate: new FormControl(val.birthdate, [Validators.required]),
gender: new FormControl(val.gender ? val.gender : '', [Validators.required]),
})
}
saveData() {
if (this.userDataFormGroup.invalid) {
this.markFormGroupTouched(this.userDataFormGroup)
return
}
this.userData = this.userDataFormGroup.value as UserDataForm
this.jsonRpcService.rpc({
method: 'updateAdditionalInfo',
params: [this.userData]
}, RpcService.authService, true).subscribe({
next: async () => {
this.messageService.add({severity:'custom', summary:'Данные успешно обновлены!'});
const accountData = (await lastValueFrom(
this.jsonrpc
.rpc(
{
method: 'getTokenData',
params: [],
},
RpcService.authService,
true
)
)).data
if (accountData.user_id) {
this.appleWallet.reloadCard(accountData.user_id).subscribe({
next: (value) => {
console.log(value);
},
error: (err) => {
console.error(err);
}
})
}
},
error: (err) => {
console.error('Error: ', err)
this.messageService.add({severity:'error', summary:'Произошла ошибка, попробуйте позже'});
}
})
}
markFormGroupTouched(formGroup: FormGroup) {
(<any>Object).values(formGroup.controls).forEach((control: FormControl) => {
control.markAsDirty();
});
}
}