Skip to content

Commit 5f37069

Browse files
committed
refactor: simplify streamedQuery logic with clearer isReplaceRefetch condition
- Extract isReplaceRefetch variable for better readability - Use explicit if-else instead of negated conditions - Make it clearer when reducer is called in each branch
1 parent d80e438 commit 5f37069

1 file changed

Lines changed: 12 additions & 9 deletions

File tree

packages/query-core/src/streamedQuery.ts

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,7 @@ export function streamedQuery<
7676
})
7777
}
7878

79-
let result =
80-
isRefetch && refetchMode === 'append'
81-
? (query.state.data as TData)
82-
: initialValue
79+
let result = initialValue
8380

8481
let cancelled: boolean = false as boolean
8582
const streamFnContext = addConsumeAwareSignal<
@@ -98,19 +95,25 @@ export function streamedQuery<
9895

9996
const stream = await streamFn(streamFnContext)
10097

98+
const isReplaceRefetch = isRefetch && refetchMode === 'replace'
99+
101100
for await (const chunk of stream) {
102101
if (cancelled) {
103102
break
104103
}
105-
result = reducer(result, chunk)
106-
// don't append to the cache directly when replace-refetching
107-
if (!isRefetch || refetchMode !== 'replace') {
108-
context.client.setQueryData<TData>(context.queryKey, result)
104+
105+
if (isReplaceRefetch) {
106+
// don't append to the cache directly when replace-refetching
107+
result = reducer(result, chunk)
108+
} else {
109+
context.client.setQueryData<TData>(context.queryKey, (prev) =>
110+
reducer(prev === undefined ? initialValue : prev, chunk),
111+
)
109112
}
110113
}
111114

112115
// finalize result: replace-refetching needs to write to the cache
113-
if (isRefetch && refetchMode === 'replace' && !cancelled) {
116+
if (isReplaceRefetch && !cancelled) {
114117
context.client.setQueryData<TData>(context.queryKey, result)
115118
}
116119

0 commit comments

Comments
 (0)