Skip to content

Commit 7d5dd5b

Browse files
authored
Chore/logs reloading state (supabase#37252)
* Add loading opacity and keep previous data for logs Wrapped TimelineChart and DataTableInfinite in divs with opacity transition during data fetching for improved UX. Added keepPreviousData: true to unified logs chart, count, and infinite queries to retain previous data while fetching new results. * Remove keepPreviousData from logs count query The keepPreviousData option was removed from the useUnifiedLogsCountQuery hook to rely on default query behavior or custom options. This may affect how data is retained between queries. * Update UnifiedLogs.tsx * Refactor TimelineChart opacity handling Moved opacity and transition classes from a wrapping div directly to the TimelineChart component for cleaner structure and improved conditional styling.
1 parent 09fc777 commit 7d5dd5b

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

apps/studio/components/interfaces/UnifiedLogs/UnifiedLogs.tsx

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ export const UnifiedLogs = () => {
100100
data: unifiedLogsData,
101101
isLoading,
102102
isFetching,
103+
isFetchingNextPage,
104+
isFetchingPreviousPage,
103105
hasNextPage,
104106
refetch: refetchLogs,
105107
fetchNextPage,
@@ -131,6 +133,9 @@ export const UnifiedLogs = () => {
131133

132134
const isRefetchingData = isFetching || isFetchingCounts || isFetchingCharts
133135

136+
// Only fade when filtering (not when loading more data or live mode)
137+
const isFetchingButNotPaginating = isFetching && !isFetchingNextPage && !isFetchingPreviousPage
138+
134139
const rawFlatData = useMemo(() => {
135140
return unifiedLogsData?.pages?.flatMap((page) => page.data ?? []) ?? []
136141
}, [unifiedLogsData?.pages])
@@ -336,7 +341,10 @@ export const UnifiedLogs = () => {
336341
/>
337342
<TimelineChart
338343
data={unifiedLogsChart}
339-
className="-mb-2"
344+
className={cn(
345+
'-mb-2',
346+
isFetchingCharts && 'opacity-60 transition-opacity duration-150'
347+
)}
340348
columnId="timestamp"
341349
chartConfig={filteredChartConfig}
342350
/>
@@ -351,7 +359,14 @@ export const UnifiedLogs = () => {
351359
className="h-full"
352360
>
353361
<ResizablePanelGroup key="main-logs" direction="vertical" className="h-full">
354-
<ResizablePanel defaultSize={100} minSize={30} className="bg">
362+
<ResizablePanel
363+
defaultSize={100}
364+
minSize={30}
365+
className={cn(
366+
'bg',
367+
isFetchingButNotPaginating && 'opacity-60 transition-opacity duration-150'
368+
)}
369+
>
355370
<DataTableInfinite
356371
columns={UNIFIED_LOGS_COLUMNS}
357372
totalRows={totalDBRowCount}

apps/studio/data/logs/unified-logs-chart-query.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ export const useUnifiedLogsChartQuery = <TData = UnifiedLogsChartData>(
155155
({ signal }) => getUnifiedLogsChart({ projectRef, search }, signal),
156156
{
157157
enabled: enabled && typeof projectRef !== 'undefined',
158+
keepPreviousData: true,
158159
...UNIFIED_LOGS_QUERY_OPTIONS,
159160
...options,
160161
}

apps/studio/data/logs/unified-logs-infinite-query.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ export const useUnifiedLogsInfiniteQuery = <TData = UnifiedLogsData>(
168168
},
169169
{
170170
enabled: enabled && typeof projectRef !== 'undefined',
171+
keepPreviousData: true,
171172
getPreviousPageParam: (firstPage) => {
172173
if (!firstPage.prevCursor) return null
173174
const result = { cursor: firstPage.prevCursor, direction: 'prev' }

0 commit comments

Comments
 (0)