File tree Expand file tree Collapse file tree
Sources/Queryable/Handlers Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ //
2+ // IfQueryable.swift
3+ //
4+ //
5+ // Created by Kai Quan Tay on 12/1/24.
6+ //
7+
8+ import SwiftUI
9+
10+ public struct WithQuery < Item, Result, QueryContent: View > : View {
11+ @ObservedObject private var queryable : Queryable < Item , Result >
12+ private var queryContent : ( _ item: Item , _ query: QueryResolver < Result > ) -> QueryContent
13+
14+ public init (
15+ _ queryable: Queryable < Item , Result > ,
16+ @ViewBuilder queryContent: @escaping ( _ item: Item , _ query: QueryResolver < Result > ) -> QueryContent
17+ ) {
18+ self . queryable = queryable
19+ self . queryContent = queryContent
20+ }
21+
22+ public init (
23+ _ queryable: Queryable < Void , Result > ,
24+ @ViewBuilder queryContent: @escaping ( _ query: QueryResolver < Result > ) -> QueryContent
25+ ) where Item == Void {
26+ self . queryable = queryable
27+ self . queryContent = { _, query in queryContent ( query) }
28+ }
29+
30+ public var body : some View {
31+ if let initialItemContainer = queryable. itemContainer {
32+ StableItemContainerView ( itemContainer: initialItemContainer) { itemContainer in
33+ queryContent ( itemContainer. item, initialItemContainer. resolver)
34+ . onDisappear {
35+ queryable. autoCancelContinuation ( id: itemContainer. id, reason: . presentationEnded)
36+ }
37+ }
38+ }
39+ }
40+ }
You can’t perform that action at this time.
0 commit comments