From d7fb55a6618df001384d546149f04486652cc95f Mon Sep 17 00:00:00 2001
From: _Bastler <_Bastler@bstly.de>
Date: Sun, 15 Aug 2021 18:41:50 +0200
Subject: [PATCH] minetest account deletion
---
.../minetest/accounts/accounts.component.html | 18 ++++--
.../minetest/accounts/accounts.component.ts | 60 ++++++++++++-------
src/app/services/minetest.accounts.service.ts | 4 ++
3 files changed, 57 insertions(+), 25 deletions(-)
diff --git a/src/app/pages/minetest/accounts/accounts.component.html b/src/app/pages/minetest/accounts/accounts.component.html
index 041874e..221e05d 100644
--- a/src/app/pages/minetest/accounts/accounts.component.html
+++ b/src/app/pages/minetest/accounts/accounts.component.html
@@ -8,6 +8,19 @@
{{minetestAccount.name}}
+
+
+ {{'minetest.accounts.delete' | i18n}} |
+
+
+ warning
+
+
+ delete
+
+ |
+
+
@@ -26,11 +39,6 @@
{{'minetest.accounts.error.name' | i18n}}
-
-
- {{'minetest.accounts.deletion' | i18n}}
-
-
diff --git a/src/app/pages/minetest/accounts/accounts.component.ts b/src/app/pages/minetest/accounts/accounts.component.ts
index d63f8be..6cde565 100644
--- a/src/app/pages/minetest/accounts/accounts.component.ts
+++ b/src/app/pages/minetest/accounts/accounts.component.ts
@@ -1,13 +1,15 @@
-import {Component, OnInit, ViewChild} from '@angular/core';
-import {FormBuilder, FormGroup, Validators, NgForm} from '@angular/forms';
+import { Component, OnInit, ViewChild } from '@angular/core';
+import { FormBuilder, FormGroup, Validators, NgForm } from '@angular/forms';
+import { MatDialog } from '@angular/material/dialog';
-import {QuotaService} from '../../../services/quota.service';
-import {MinetestAccountsService} from '../../../services/minetest.accounts.service';
+import { QuotaService } from '../../../services/quota.service';
+import { MinetestAccountsService } from '../../../services/minetest.accounts.service';
+import { ConfirmDialog } from '../../../ui/confirm/confirm.component';
@Component({
selector: 'app-minetest-accounts',
templateUrl: './accounts.component.html',
- styleUrls: ['./accounts.component.scss']
+ styleUrls: [ './accounts.component.scss' ]
})
export class MinetestAccountsComponent implements OnInit {
@@ -19,53 +21,54 @@ export class MinetestAccountsComponent implements OnInit {
success: boolean;
working: boolean;
- minetestAccountsColumns = ["name"];
+ minetestAccountsColumns = [ "name", "delete" ];
constructor(
private quotaService: QuotaService,
private formBuilder: FormBuilder,
- private minetestAccountsService: MinetestAccountsService) {}
+ private minetestAccountsService: MinetestAccountsService,
+ public dialog: MatDialog) { }
ngOnInit(): void {
this.form = this.formBuilder.group({
- name: ['', Validators.required],
+ name: [ '', Validators.required ],
});
- this.update();
+ this.refresh();
}
create(): void {
this.working = true;
this.minetestAccountsService.create(this.minetestAccount).subscribe(response => {
- this.update();
+ this.refresh();
this.formDirective.resetForm();
this.minetestAccount = {};
this.working = false;
}, (error) => {
this.working = false;
- if(error.status == 409) {
+ if (error.status == 409) {
let errors = {};
- for(let code of error.error) {
- errors[code.field] = errors[code.field] || {};
- errors[code.field][code.code] = true;
+ for (let code of error.error) {
+ errors[ code.field ] = errors[ code.field ] || {};
+ errors[ code.field ][ code.code ] = true;
}
- for(let code in errors) {
- this.form.get(code).setErrors(errors[code]);
+ for (let code in errors) {
+ this.form.get(code).setErrors(errors[ code ]);
}
}
})
}
- update() {
+ refresh() {
this.minetestAccountsQuota = 0;
this.quotaService.quotas().subscribe((data: any) => {
- for(let quota of data) {
- if(quota.name == "minetest_accounts") {
+ for (let quota of data) {
+ if (quota.name == "minetest_accounts") {
this.minetestAccountsQuota = quota.value;
- }
+ }
}
})
@@ -74,4 +77,21 @@ export class MinetestAccountsComponent implements OnInit {
})
}
+
+ confirmDelete(name) {
+ const dialogRef = this.dialog.open(ConfirmDialog, {
+ data: {
+ 'label': 'minetest.accounts.confirmDelete',
+ 'args': [ name ]
+ }
+ })
+
+ dialogRef.afterClosed().subscribe(result => {
+ if (result) {
+ this.minetestAccountsService.delete(name).subscribe((result: any) => {
+ this.refresh();
+ })
+ }
+ });
+ }
}
diff --git a/src/app/services/minetest.accounts.service.ts b/src/app/services/minetest.accounts.service.ts
index bed477f..d61fe6b 100644
--- a/src/app/services/minetest.accounts.service.ts
+++ b/src/app/services/minetest.accounts.service.ts
@@ -19,4 +19,8 @@ export class MinetestAccountsService {
return this.http.post(environment.apiUrl + "/minetest/accounts", minetestAccount);
}
+ delete(name) {
+ return this.http.delete(environment.apiUrl + "/minetest/accounts/" + name);
+ }
+
}
\ No newline at end of file