fix(ui): push log sort toggle server-side

Reversing logStream.items client-side breaks across infinite-scroll
pages. Passing sort='asc'/'desc' into the query key and URL triggers
a fresh first-page fetch in the selected order.
This commit is contained in:
hsiegeln
2026-04-17 13:19:29 +02:00
parent 6d3956935d
commit a2d55f7075
3 changed files with 10 additions and 7 deletions

View File

@@ -165,6 +165,7 @@ export interface UseInfiniteApplicationLogsArgs {
sources?: string[]; // multi-select, server-side OR
levels?: string[]; // multi-select, server-side OR
exchangeId?: string;
sort?: 'asc' | 'desc';
isAtTop: boolean;
pageSize?: number;
}
@@ -189,6 +190,7 @@ export function useInfiniteApplicationLogs(
const sourcesParam = sortedSources.join(',');
const levelsParam = sortedLevels.join(',');
const pageSize = args.pageSize ?? 100;
const sort = args.sort ?? 'desc';
return useInfiniteStream<LogEntryResponse>({
queryKey: [
@@ -202,6 +204,7 @@ export function useInfiniteApplicationLogs(
fromIso ?? '',
toIso ?? '',
pageSize,
sort,
],
enabled: !!args.application && !!selectedEnv,
isAtTop: args.isAtTop,
@@ -217,7 +220,7 @@ export function useInfiniteApplicationLogs(
if (toIso) qp.set('to', toIso);
if (cursor) qp.set('cursor', cursor);
qp.set('limit', String(pageSize));
qp.set('sort', 'desc');
qp.set('sort', sort);
const res = await fetch(
`${config.apiBaseUrl}/environments/${encodeURIComponent(selectedEnv ?? '')}/logs?${qp}`,

View File

@@ -312,17 +312,17 @@ export default function AgentHealth() {
application: appId,
sources: [...logSources],
levels: [...logLevels],
sort: logSortAsc ? 'asc' : 'desc',
isAtTop: isLogAtTop,
});
const logEntries = useMemo<LogEntry[]>(() => {
const mapped = logStream.items.map((l) => ({
return logStream.items.map((l) => ({
timestamp: l.timestamp ?? '',
level: mapLogLevel(l.level),
message: l.message ?? '',
source: l.source ?? undefined,
}));
return logSortAsc ? mapped.toReversed() : mapped;
}, [logStream.items, logSortAsc]);
}, [logStream.items]);
const logSearchLower = logSearch.toLowerCase();
const filteredLogs = logSearchLower
? logEntries.filter((l) => l.message.toLowerCase().includes(logSearchLower))

View File

@@ -141,17 +141,17 @@ export default function AgentInstance() {
agentId: instanceId,
sources: [...logSources],
levels: [...logLevels],
sort: logSortAsc ? 'asc' : 'desc',
isAtTop: isLogAtTop,
});
const logEntries = useMemo<LogEntry[]>(() => {
const mapped = logStream.items.map((l) => ({
return logStream.items.map((l) => ({
timestamp: l.timestamp ?? '',
level: mapLogLevel(l.level),
message: l.message ?? '',
source: l.source ?? undefined,
}));
return logSortAsc ? mapped.toReversed() : mapped;
}, [logStream.items, logSortAsc]);
}, [logStream.items]);
const searchLower = logSearch.toLowerCase();
const filteredLogs = searchLower
? logEntries.filter((l) => l.message.toLowerCase().includes(searchLower))