fix(ui): stabilize infinite-stream callbacks + suppress empty-state flash

- useInfiniteStream: wrap fetchNextPage and refresh in useCallback so
  InfiniteScrollArea's IntersectionObserver does not re-subscribe on
  every parent render.
- InfiniteScrollArea: do not render 'End of stream' until at least one
  item has loaded and the initial query has settled (was flashing on
  mount before first fetch).
- AgentHealth: pass isLoading + hasItems to both InfiniteScrollArea
  wrappers.
This commit is contained in:
hsiegeln
2026-04-17 12:52:39 +02:00
parent fb7d6db375
commit 7f233460aa
3 changed files with 22 additions and 6 deletions

View File

@@ -957,6 +957,8 @@ export default function AgentHealth() {
onTopVisibilityChange={setIsLogAtTop}
isFetchingNextPage={logStream.isFetchingNextPage}
hasNextPage={logStream.hasNextPage}
isLoading={logStream.isLoading}
hasItems={logStream.items.length > 0}
maxHeight={360}
>
{filteredLogs.length > 0 ? (
@@ -993,6 +995,8 @@ export default function AgentHealth() {
onTopVisibilityChange={setIsTimelineAtTop}
isFetchingNextPage={eventStream.isFetchingNextPage}
hasNextPage={eventStream.hasNextPage}
isLoading={eventStream.isLoading}
hasItems={eventStream.items.length > 0}
maxHeight={360}
>
{feedEvents.length > 0 ? (