Skip to content

Commit ea6160e

Browse files
author
Hoang Pham
committed
fix: fix useQuery keeping old fetch closure
1 parent 240504f commit ea6160e

3 files changed

Lines changed: 11 additions & 102 deletions

File tree

Sources/SwiftUIQuery/SwiftUIQuery.swift

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ public typealias InitialDataFunction<TData: Sendable> = @Sendable () -> TData?
339339

340340
/// Configuration options for queries
341341
/// Equivalent to TanStack Query's QueryOptions
342-
public struct QueryOptions<TData: Sendable, TKey: QueryKey>: Sendable {
342+
public struct QueryOptions<TData: Sendable, TKey: QueryKey>: Sendable, Equatable {
343343
/// The query key that uniquely identifies this query
344344
public let queryKey: TKey
345345
/// The function that will be called to fetch data
@@ -367,6 +367,15 @@ public struct QueryOptions<TData: Sendable, TKey: QueryKey>: Sendable {
367367
/// Whether this query is enabled (will fetch automatically)
368368
public let enabled: Bool
369369

370+
public static func == (lhs: QueryOptions<TData, TKey>, rhs: QueryOptions<TData, TKey>) -> Bool {
371+
lhs.queryKey == rhs.queryKey &&
372+
lhs.staleTime == rhs.staleTime &&
373+
lhs.gcTime == rhs.gcTime &&
374+
lhs.refetchTriggers == rhs.refetchTriggers &&
375+
lhs.refetchOnAppear == rhs.refetchOnAppear &&
376+
lhs.enabled == rhs.enabled
377+
}
378+
370379
public init(
371380
queryKey: TKey,
372381
queryFn: @escaping QueryFunction<TData, TKey>,

Sources/SwiftUIQuery/UseInfiniteQuery.swift

Lines changed: 0 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -285,71 +285,6 @@ public struct UseInfiniteQuery<
285285
.onChange(of: options) { newOptions in
286286
observer.setOptions(newOptions)
287287
}
288-
// .onChange(of: options.enabled) { newEnabled in
289-
// // Update observer options when enabled state changes
290-
// // Create new options using the new enabled value
291-
// let newOptions = InfiniteQueryOptions<TData, QueryError, TKey, TPageParam>(
292-
// queryKey: options.queryKey,
293-
// queryFn: options.queryFn,
294-
// getNextPageParam: options.getNextPageParam,
295-
// getPreviousPageParam: options.getPreviousPageParam,
296-
// initialPageParam: options.initialPageParam,
297-
// maxPages: options.maxPages,
298-
// retryConfig: options.retryConfig,
299-
// networkMode: options.networkMode,
300-
// staleTime: options.staleTime,
301-
// gcTime: options.gcTime,
302-
// refetchTriggers: options.refetchTriggers,
303-
// refetchOnAppear: options.refetchOnAppear,
304-
// structuralSharing: options.structuralSharing,
305-
// meta: options.meta,
306-
// enabled: newEnabled
307-
// )
308-
// observer.setOptions(newOptions)
309-
// }
310-
// .onChange(of: options.initialPageParam) { newInitialPageParam in
311-
// // Update observer options when enabled state changes
312-
// // Create new options using the new enabled value
313-
// let newOptions = InfiniteQueryOptions<TData, QueryError, TKey, TPageParam>(
314-
// queryKey: options.queryKey,
315-
// queryFn: options.queryFn,
316-
// getNextPageParam: options.getNextPageParam,
317-
// getPreviousPageParam: options.getPreviousPageParam,
318-
// initialPageParam: newInitialPageParam,
319-
// maxPages: options.maxPages,
320-
// retryConfig: options.retryConfig,
321-
// networkMode: options.networkMode,
322-
// staleTime: options.staleTime,
323-
// gcTime: options.gcTime,
324-
// refetchTriggers: options.refetchTriggers,
325-
// refetchOnAppear: options.refetchOnAppear,
326-
// structuralSharing: options.structuralSharing,
327-
// meta: options.meta,
328-
// enabled: options.enabled
329-
// )
330-
// observer.setOptions(newOptions)
331-
// }
332-
// .onChange(of: options.staleTime) { newStaleTime in
333-
// // Update observer options when staleTime changes
334-
// let newOptions = InfiniteQueryOptions<TData, QueryError, TKey, TPageParam>(
335-
// queryKey: options.queryKey,
336-
// queryFn: options.queryFn,
337-
// getNextPageParam: options.getNextPageParam,
338-
// getPreviousPageParam: options.getPreviousPageParam,
339-
// initialPageParam: options.initialPageParam,
340-
// maxPages: options.maxPages,
341-
// retryConfig: options.retryConfig,
342-
// networkMode: options.networkMode,
343-
// staleTime: newStaleTime,
344-
// gcTime: options.gcTime,
345-
// refetchTriggers: options.refetchTriggers,
346-
// refetchOnAppear: options.refetchOnAppear,
347-
// structuralSharing: options.structuralSharing,
348-
// meta: options.meta,
349-
// enabled: options.enabled
350-
// )
351-
// observer.setOptions(newOptions)
352-
// }
353288
}
354289
}
355290

Sources/SwiftUIQuery/UseQuery.swift

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -168,42 +168,7 @@ public struct UseQuery<TData: Sendable, TKey: QueryKey, Content: View>: View {
168168
.onDisappear {
169169
observer.unsubscribe()
170170
}
171-
.onChange(of: options.queryKey) { newKey in
172-
let newOptions = QueryOptions<TData, TKey>(
173-
queryKey: newKey,
174-
queryFn: options.queryFn,
175-
retryConfig: options.retryConfig,
176-
networkMode: options.networkMode,
177-
staleTime: options.staleTime,
178-
gcTime: options.gcTime,
179-
refetchTriggers: options.refetchTriggers,
180-
refetchOnAppear: options.refetchOnAppear,
181-
initialData: options.initialData,
182-
initialDataFunction: options.initialDataFunction,
183-
structuralSharing: options.structuralSharing,
184-
meta: options.meta,
185-
enabled: options.enabled
186-
)
187-
observer.setOptions(newOptions)
188-
}
189-
.onChange(of: options.enabled) { newEnabled in
190-
// Update observer options when enabled state changes
191-
// Create new options using the new enabled value
192-
let newOptions = QueryOptions<TData, TKey>(
193-
queryKey: options.queryKey,
194-
queryFn: options.queryFn,
195-
retryConfig: options.retryConfig,
196-
networkMode: options.networkMode,
197-
staleTime: options.staleTime,
198-
gcTime: options.gcTime,
199-
refetchTriggers: options.refetchTriggers,
200-
refetchOnAppear: options.refetchOnAppear,
201-
initialData: options.initialData,
202-
initialDataFunction: options.initialDataFunction,
203-
structuralSharing: options.structuralSharing,
204-
meta: options.meta,
205-
enabled: newEnabled // Use the new enabled value from closure
206-
)
171+
.onChange(of: options) { newOptions in
207172
observer.setOptions(newOptions)
208173
}
209174
}

0 commit comments

Comments
 (0)