diff --git a/src/Web/StellaOps.Web/src/app/features/policy-studio/services/policy-api.service.ts b/src/Web/StellaOps.Web/src/app/features/policy-studio/services/policy-api.service.ts index 2357c06cf..04feca9cb 100644 --- a/src/Web/StellaOps.Web/src/app/features/policy-studio/services/policy-api.service.ts +++ b/src/Web/StellaOps.Web/src/app/features/policy-studio/services/policy-api.service.ts @@ -14,6 +14,7 @@ import { Injectable, inject } from '@angular/core'; import { HttpClient, HttpParams } from '@angular/common/http'; import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; import type { PolicyPackSummary, @@ -68,7 +69,24 @@ export class PolicyApiService { if (params?.limit) httpParams = httpParams.set('limit', params.limit.toString()); if (params?.offset) httpParams = httpParams.set('offset', params.offset.toString()); - return this.http.get(`${API_BASE}/packs`, { params: httpParams }); + return this.http.get(`${API_BASE}/packs`, { params: httpParams }).pipe( + map((items) => (items ?? []).map((item) => this.mapPackSummary(item))) + ); + } + + private mapPackSummary(raw: any): PolicyPackSummary { + return { + id: raw.packId ?? raw.id ?? '', + name: raw.displayName ?? raw.name ?? raw.packId ?? 'Unnamed Pack', + description: raw.description ?? '', + version: raw.versions?.length > 0 ? `v${Math.max(...raw.versions)}` : 'latest', + status: raw.status ?? 'active', + createdAt: raw.createdAt ?? '', + modifiedAt: raw.modifiedAt ?? raw.createdAt ?? '', + createdBy: raw.createdBy ?? '', + modifiedBy: raw.modifiedBy ?? raw.createdBy ?? '', + tags: raw.tags ?? [], + }; } /** @@ -95,7 +113,16 @@ export class PolicyApiService { content: string; tags?: string[]; }): Observable { - return this.http.post(`${API_BASE}/packs`, pack); + return this.http.post(`${API_BASE}/packs`, { + displayName: pack.name, + ...pack, + }).pipe( + map((raw) => ({ + ...raw, + id: raw?.packId ?? raw?.id ?? '', + name: raw?.displayName ?? raw?.name ?? pack.name, + })) + ); } /**