feat: Phase 4 frontend - Integrations backoffice section (mock-gateway backed)
New core/integrations (Connector/DeadLetterEntry models + gateway/token) and features/admin/integrations (facade + page: connector table with status/lag/errors/backlog/unmatched, pause/resume). Seeded empty per Sprint 0.1's "no fixed partner list" decision - the section is ready to populate the moment the first real connector is onboarded against docs/backend/PHASE-4-CONNECTOR-FRAMEWORK-CONTRACT.md §7. New /backoffice/ integrations route + nav entry, nav i18n key in all 3 languages. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
import { Injectable, inject, signal } from '@angular/core';
|
||||
import { take } from 'rxjs/operators';
|
||||
import { Connector } from '../../../../core/integrations/models/connector.model';
|
||||
import { CONNECTOR_GATEWAY } from '../../../../core/integrations/services/connector-gateway.token';
|
||||
|
||||
@Injectable({ providedIn: 'root' })
|
||||
export class AdminIntegrationsFacade {
|
||||
private readonly gateway = inject(CONNECTOR_GATEWAY);
|
||||
|
||||
readonly connectors = signal<Connector[]>([]);
|
||||
readonly loading = signal(false);
|
||||
|
||||
load(): void {
|
||||
this.loading.set(true);
|
||||
this.gateway.loadConnectors().pipe(take(1)).subscribe(items => {
|
||||
this.connectors.set(items);
|
||||
this.loading.set(false);
|
||||
});
|
||||
}
|
||||
|
||||
pause(id: string): void {
|
||||
this.gateway.pause(id).pipe(take(1)).subscribe(() => this.load());
|
||||
}
|
||||
|
||||
resume(id: string): void {
|
||||
this.gateway.resume(id).pipe(take(1)).subscribe(() => this.load());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user