This commit is contained in:
OnlyPapy98
2025-12-30 19:09:01 +01:00
parent ed79cae77d
commit f21a5fd4e6
22 changed files with 554 additions and 315 deletions

View File

@@ -9,7 +9,7 @@ import { normalizePage } from '@shared/paging/normalize-page';
import { ListParams, PagedResult } from '@shared/paging/paging';
const USE_SERVER = true;
const API_BASE = '/api/v1/agents';
const API_BASE = '/api/agents';
// Interface to match the API response structure for TPE (nested in Agent)
// Note: When TPE is nested in Agent's tpes array, the agent field might be omitted or be a reference
@@ -270,49 +270,39 @@ export class AgentService {
// GET /api/v1/agents - List all
list(params?: ListParams): Observable<PagedResult<Agent>> {
if (USE_SERVER) {
let httpParams = new HttpParams();
if (params) {
if (params.page) httpParams = httpParams.set('page', params.page.toString());
if (params.size) httpParams = httpParams.set('perPage', params.size.toString());
if (params.search) httpParams = httpParams.set('search', params.search);
if (params.sortKey) httpParams = httpParams.set('sortKey', params.sortKey);
if (params.sortDir) httpParams = httpParams.set('sortDir', params.sortDir);
}
return this.http
.get<AgentApiResponse[]>(this.apiUrl, {
params: httpParams,
headers: this.getNgrokHeaders(),
})
.pipe(
map((list) => {
const agents = list.map((apiAgent) => {
const transformed = this.transformAgent(apiAgent);
return transformed;
});
// If pagination params provided, return paginated result
if (params) {
return normalizePage<Agent>(
{ data: agents, meta: { total: agents.length } },
params.page || 1,
params.size || 10
);
}
// Otherwise return all as single page
return normalizePage<Agent>(
{ data: agents, meta: { total: agents.length } },
1,
agents.length
);
}),
catchError((err) => {
console.error('Error fetching agents:', err);
return of(normalizePage<Agent>({ data: [], meta: { total: 0 } }, 1, 10));
})
);
let httpParams = new HttpParams();
if (params) {
if (params.page) httpParams = httpParams.set('page', params.page.toString());
if (params.size) httpParams = httpParams.set('perPage', params.size.toString());
if (params.search) httpParams = httpParams.set('search', params.search);
if (params.sortKey) httpParams = httpParams.set('sortKey', params.sortKey);
if (params.sortDir) httpParams = httpParams.set('sortDir', params.sortDir);
}
return of(normalizePage<Agent>({ data: [], meta: { total: 0 } }, 1, 10));
return this.http
.get<PagedResult<AgentApiResponse>>(this.apiUrl, {
params: httpParams,
headers: this.getNgrokHeaders(),
})
.pipe(
map((res) => {
const agents = res.content.map((apiAgent) => {
const transformed = this.transformAgent(apiAgent);
return transformed;
});
// If pagination params provided, return paginated result
const resAgent = {
...res,
content: agents
}
// Otherwise return all as single page
return resAgent;
}),
catchError((err) => {
console.error('Error fetching agents:', err);
return of(normalizePage<Agent>({ content: [], meta: { total: 0 } }, 1, 10));
})
);
}
// POST /api/v1/agents - Create