Skip to content

Commit 9f98f59

Browse files
committed
fix(logs): sync refetch refs during render, fix handleToggleLive stale read, short-circuit memo comparator
1 parent 11b46bf commit 9f98f59

File tree

2 files changed

+18
-26
lines changed

2 files changed

+18
-26
lines changed

apps/sim/app/workspace/[workspaceId]/logs/components/log-details/log-details.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,8 @@ const WorkflowOutputSection = memo(
234234
</div>
235235
)
236236
},
237-
(prev, next) => JSON.stringify(prev.output) === JSON.stringify(next.output)
237+
(prev, next) =>
238+
prev.output === next.output || JSON.stringify(prev.output) === JSON.stringify(next.output)
238239
)
239240

240241
interface LogDetailsProps {

apps/sim/app/workspace/[workspaceId]/logs/logs.tsx

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -230,12 +230,8 @@ export default function Logs() {
230230
useEffect(() => {
231231
selectedLogIdRef.current = selectedLogId
232232
}, [selectedLogId])
233-
useEffect(() => {
234-
logsRefetchRef.current = logsQuery.refetch
235-
}, [logsQuery.refetch])
236-
useEffect(() => {
237-
activeLogRefetchRef.current = activeLogQuery.refetch
238-
}, [activeLogQuery.refetch])
233+
logsRefetchRef.current = logsQuery.refetch
234+
activeLogRefetchRef.current = activeLogQuery.refetch
239235
logsQueryRef.current = {
240236
isFetching: logsQuery.isFetching,
241237
hasNextPage: logsQuery.hasNextPage ?? false,
@@ -358,27 +354,22 @@ export default function Logs() {
358354
}
359355
}, [])
360356

361-
const isLiveRef = useRef(isLive)
362-
useEffect(() => {
363-
isLiveRef.current = isLive
364-
}, [isLive])
365-
366357
const handleToggleLive = useCallback(() => {
367-
const wasLive = isLiveRef.current
368-
setIsLive((prev) => !prev)
369-
370-
if (!wasLive) {
371-
setIsVisuallyRefreshing(true)
372-
const timerId = window.setTimeout(() => {
373-
setIsVisuallyRefreshing(false)
374-
refreshTimersRef.current.delete(timerId)
375-
}, REFRESH_SPINNER_DURATION_MS)
376-
refreshTimersRef.current.add(timerId)
377-
logsRefetchRef.current()
378-
if (selectedLogIdRef.current) {
379-
activeLogRefetchRef.current()
358+
setIsLive((prev) => {
359+
if (!prev) {
360+
setIsVisuallyRefreshing(true)
361+
const timerId = window.setTimeout(() => {
362+
setIsVisuallyRefreshing(false)
363+
refreshTimersRef.current.delete(timerId)
364+
}, REFRESH_SPINNER_DURATION_MS)
365+
refreshTimersRef.current.add(timerId)
366+
logsRefetchRef.current()
367+
if (selectedLogIdRef.current) {
368+
activeLogRefetchRef.current()
369+
}
380370
}
381-
}
371+
return !prev
372+
})
382373
}, [])
383374

384375
const prevIsFetchingRef = useRef(logsQuery.isFetching)

0 commit comments

Comments
 (0)