import { Component, OnInit, inject, signal } from '@angular/core'; import { CommonModule } from '@angular/common'; import { RouterLink } from '@angular/router'; import { ApiService } from '../../core/services/api.service'; import { ToastService } from '../../core/services/toast.service'; interface DomainView { domain: { id: number; domain: string; dnsProvider: 'cloudflare' | 'manual' | null; isObsolete: boolean; defaultWildcard: boolean; }; serviceCount: number; certificateStatus: 'valid' | 'expiring-soon' | 'expired' | 'pending' | 'none'; daysRemaining: number | null; certificates: any[]; requirements: any[]; } @Component({ selector: 'app-domains', standalone: true, imports: [CommonModule, RouterLink], template: `
Loading domains...
| Domain | Provider | Services | Certificate | Expiry | Actions |
|---|---|---|---|---|---|
|
{{ domainView.domain.domain }}
@if (domainView.domain.isObsolete) {
Obsolete
}
|
@if (domainView.domain.dnsProvider === 'cloudflare') { Cloudflare } @else if (domainView.domain.dnsProvider === 'manual') { Manual } @else { None } | {{ domainView.serviceCount }} | @switch (domainView.certificateStatus) { @case ('valid') { Valid } @case ('expiring-soon') { Expiring Soon } @case ('expired') { Expired } @case ('pending') { Pending } @default { None } } | @if (domainView.daysRemaining !== null) { {{ domainView.daysRemaining }} days } @else { — } | View Details |
No domains found
Sync your Cloudflare zones or manually add domains to get started