diff --git a/ui/src/api/queries/logs.ts b/ui/src/api/queries/logs.ts index 8ad1e391..982ab4f0 100644 --- a/ui/src/api/queries/logs.ts +++ b/ui/src/api/queries/logs.ts @@ -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({ 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}`, diff --git a/ui/src/pages/AgentHealth/AgentHealth.tsx b/ui/src/pages/AgentHealth/AgentHealth.tsx index d3ca863d..3406bf5a 100644 --- a/ui/src/pages/AgentHealth/AgentHealth.tsx +++ b/ui/src/pages/AgentHealth/AgentHealth.tsx @@ -312,17 +312,17 @@ export default function AgentHealth() { application: appId, sources: [...logSources], levels: [...logLevels], + sort: logSortAsc ? 'asc' : 'desc', isAtTop: isLogAtTop, }); const logEntries = useMemo(() => { - 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)) diff --git a/ui/src/pages/AgentInstance/AgentInstance.tsx b/ui/src/pages/AgentInstance/AgentInstance.tsx index e2c992bf..3e8eb703 100644 --- a/ui/src/pages/AgentInstance/AgentInstance.tsx +++ b/ui/src/pages/AgentInstance/AgentInstance.tsx @@ -141,17 +141,17 @@ export default function AgentInstance() { agentId: instanceId, sources: [...logSources], levels: [...logLevels], + sort: logSortAsc ? 'asc' : 'desc', isAtTop: isLogAtTop, }); const logEntries = useMemo(() => { - 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))