AI Implementation feature(841): First-Start Create Admin Modal 1.00 (#3)

This commit was merged in pull request #3.
This commit is contained in:
2026-07-21 15:07:44 +00:00
parent 9f67ec8c50
commit 960516a7bc
18 changed files with 518 additions and 112 deletions
@@ -0,0 +1,48 @@
import {
ChangeDetectionStrategy,
Component,
OnInit,
inject,
signal,
} from '@angular/core';
import { CommonModule } from '@angular/common';
import { AdminService, AdminUser } from '../../core/services/admin.service';
@Component({
selector: 'app-admin-users',
standalone: true,
changeDetection: ChangeDetectionStrategy.OnPush,
imports: [CommonModule],
template: `
<section class="admin-area">
<h2>Admin area</h2>
<p data-testid="admin-loading" *ngIf="loading()">Loading users...</p>
<p data-testid="admin-error" *ngIf="error()" style="color:var(--color-danger)">{{ error() }}</p>
<ul data-testid="admin-user-list" *ngIf="!loading() && !error()">
<li *ngFor="let u of users()">
<b>{{ u.username }}</b> ({{ u.role }})
</li>
</ul>
</section>
`,
})
export class AdminUsersComponent implements OnInit {
private readonly admin = inject(AdminService);
readonly users = signal<AdminUser[]>([]);
readonly loading = signal(false);
readonly error = signal<string | null>(null);
async ngOnInit(): Promise<void> {
this.loading.set(true);
this.error.set(null);
try {
const list = await this.admin.listUsers();
this.users.set(list);
} catch (e: any) {
this.error.set(e?.error?.message ?? e?.message ?? 'Failed to load users');
} finally {
this.loading.set(false);
}
}
}