Files
we_bstly-web/src/app/pages/tokens/tokens.component.ts
T
Lurkars b7b4e2d032 update
2020-11-02 08:29:52 +01:00

128 lines
3.3 KiB
TypeScript

import { Component, OnInit, ViewChild } from '@angular/core';
import { FormBuilder, FormGroup, NgForm, Validators } from '@angular/forms';
import { ActivatedRoute, Router } from '@angular/router';
import { AuthService } from './../../services/auth.service';
import { ItemService } from './../../services/item.service';
import { I18nService } from './../../services/i18n.service';
import { PermissionService } from './../../services/permission.service';
import { QuotaService } from './../../services/quota.service';
@Component({
selector: 'app-tokens',
templateUrl: './tokens.component.html',
styleUrls: ['./tokens.component.scss']
})
export class TokensComponent implements OnInit {
form: FormGroup;
@ViewChild('formDirective') private formDirective: NgForm;
public tokenInvalid: boolean;
public tokenRedeemed: boolean;
auth;
items = [];
permissions = [];
quotas = [];
currentLocale: String;
constructor(private formBuilder: FormBuilder,
private authService: AuthService,
private itemService: ItemService,
private i18n: I18nService,
private permissionService: PermissionService,
private quotaService: QuotaService,
private router: Router,
private route: ActivatedRoute) {
this.currentLocale = this.i18n.getLocale();
this.authService.auth.subscribe(data => {
this.auth = data;
})
this.update();
}
async ngOnInit() {
this.form = this.formBuilder.group({
token: ['', Validators.required]
});
this.route.queryParams.subscribe(params => {
if (params.token) {
this.itemService.redeemSecret(params.token).subscribe((data: any) => {
this.update();
this.router.navigate(
['.'],
{ relativeTo: this.route }
);
}, error => {
this.form.get('token').patchValue(params.token);
if (error.status == 410) {
this.tokenRedeemed = true;
} else {
this.tokenInvalid = true;
}
})
}
});
}
redeemSecret() {
this.tokenInvalid = false;
this.tokenRedeemed = false;
if (this.form.valid) {
const secret = this.form.get('token').value;
this.itemService.redeemSecret(secret).subscribe((data: any) => {
this.formDirective.resetForm();
this.update();
}, error => {
if (error.status == 410) {
this.tokenRedeemed = true;
} else {
this.tokenInvalid = true;
}
})
}
}
removeSecret(secret: String) {
this.itemService.removeSecret(secret).subscribe((data: any) => {
this.update();
}, error => {
})
}
redeem() {
if (this.auth.authenticated) {
this.itemService.redeem().subscribe((data: any) => {
})
}
}
update() {
this.authService.getAuth().then(response => {
this.itemService.items().subscribe((data: any) => {
this.items = data;
});
this.permissionService.permissionsNew().subscribe((data: any) => {
this.permissions = data;
})
this.quotaService.quotasNew().subscribe((data: any) => {
this.quotas = data;
})
}).catch(function (error) { });;
}
canRegister() {
return this.permissions && this.permissions.some(function (permission) {
return !permission.addon;
})
}
}