Closed jeromedoyle closed 1 year ago
Hi @jeromedoyle, Thank you for reporting this.
I tried to build a HitsList
equivalent using LazyVGrid and it works well.
struct HitsGrid<Cell: View, Item: Codable, NoResults: View>: View {
@ObservedObject public var hitsController: HitsObservableController<Item>
/// Closure constructing a hit cell view
public var cell: (Item?, Int) -> Cell
/// Closure constructing a no results view-
public var noResults: (() -> NoResults)?
private let columns = [
GridItem(.flexible()),
GridItem(.flexible()),
]
public init(_ hitsObservable: HitsObservableController<Item>,
@ViewBuilder cell: @escaping (Item?, Int) -> Cell,
@ViewBuilder noResults: @escaping () -> NoResults) {
self.hitsController = hitsObservable
self.cell = cell
self.noResults = noResults
}
public var body: some View {
if let noResults = noResults?(), hitsController.hits.isEmpty {
noResults
} else {
ScrollView(showsIndicators: false) {
LazyVGrid(columns: columns, spacing: 10) {
ForEach(0..<hitsController.hits.count, id: \.self) { index in
cell(atIndex: index)
}
}
.padding(.horizontal)
}.id(hitsController.scrollID)
}
}
private func cell(atIndex index: Int) -> some View {
cell(hitsController.hits[index], index).onAppear {
hitsController.notifyAppearanceOfHit(atIndex: index)
}
}
}
Could you try it?
Hi @jeromedoyle , Due to a lack of response from your side, I close this issue. Feel free to reopen it providing more details.
Hey @VladislavFitz, I am getting the same issue but not using a LazyVGrid. @jeromedoyle Did you find a solution to your issue?
The issue is intermittent and I can not find the exact behavior leading to the issue. I am using $searchBoxController.query
as the text of my searchBar, so the onQueryChanged
is called for every text change.
2023-06-22 01:00:14.267210-0400 Aissistant[79656:27677207] *** _TtGC19AlgoliaSearchClient11HTTPRequestVS_19MultiSearchResponseS1__ 0x156535cb0 went isFinished=YES without being started by the queue it is in
2023-06-22 01:00:15.573726-0400 Aissistant[79656:27678053] *** _TtGC19AlgoliaSearchClient11HTTPRequestVS_19MultiSearchResponseS1__ 0x1595f3ba0 went isFinished=YES without being started by the queue it is in
2023-06-22 01:00:15.855572-0400 Aissistant[79656:27678050] *** _TtGC19AlgoliaSearchClient11HTTPRequestVS_19MultiSearchResponseS1__ 0x159794460 went isFinished=YES without being started by the queue it is in
2023-06-22 01:00:16.081796-0400 Aissistant[79656:27677328] *** _TtGC19AlgoliaSearchClient11HTTPRequestVS_19MultiSearchResponseS1__ 0x1597f3280 went isFinished=YES without being started by the queue it is in
2023-06-22 01:00:17.060302-0400 Aissistant[79656:27678050] *** _TtGC19AlgoliaSearchClient11HTTPRequestVS_19MultiSearchResponseS1__ 0x1567cc960 went isFinished=YES without being started by the queue it is in
2023-06-22 01:00:17.967393-0400 Aissistant[79656:27675849] Task <8503A592-4FDF-4AF7-88A2-4303112795AE>.<1855> finished with error [-1001] Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x600006c09350 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <8503A592-4FDF-4AF7-88A2-4303112795AE>.<1855>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <8503A592-4FDF-4AF7-88A2-4303112795AE>.<1855>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://w2p46x4qky-dsn.algolia.net/1/indexes/*/queries?X-Algolia-Agent=iOS%20(16.4);%20Algolia%20for%20Swift%20(8.18.0);%20InstantSearch%20iOS%20(7.25.1);%20ISTelemetry(H4sIAAAAAAAAE3ukLXRAlfEECDGdUGW7oMpwQ5XhkTbnAVVBMJsRzBaBsAFM9M0DLQAAAA%3D%3D);%20Algolia%20insights%20for%20iOS%20(8.18.0), NSErrorFailingURLKey=https://w2p46x4qky-dsn.algolia.net/1/indexes/*/queries?X-Algolia-Agent=iOS%20(16.4);%20Algolia%20for%20Swift%20(8.18.0);%20InstantSearch%20iOS%20(7.25.1);%20ISTelemetry(H4sIAAAAAAAAE3ukLXRAlfEECDGdUGW7oMpwQ5XhkTbnAVVBMJsRzBaBsAFM9M0DLQAAAA%3D%3D);%20Algolia%20insights%20for%20iOS%20(8.18.0), _kCFStreamErrorDomainKey=4}
2023-06-22 01:00:17.967702-0400 Aissistant[79656:27675849] Task <82E4CDE8-182B-45A0-B577-E4EB86ED7EA0>.<1856> finished with error [-1001] Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x600006c0c240 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <82E4CDE8-182B-45A0-B577-E4EB86ED7EA0>.<1856>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <82E4CDE8-182B-45A0-B577-E4EB86ED7EA0>.<1856>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://w2p46x4qky-dsn.algolia.net/1/indexes/*/queries?X-Algolia-Agent=iOS%20(16.4);%20Algolia%20for%20Swift%20(8.18.0);%20InstantSearch%20iOS%20(7.25.1);%20ISTelemetry(H4sIAAAAAAAAE3ukLXRAlfEECDGdUGW7oMpwQ5XhkTbnAVVBMJsRzBaBsAFM9M0DLQAAAA%3D%3D);%20Algolia%20insights%20for%20iOS%20(8.18.0), NSErrorFailingURLKey=https://w2p46x4qky-dsn.algolia.net/1/indexes/*/queries?X-Algolia-Agent=iOS%20(16.4);%20Algolia%20for%20Swift%20(8.18.0);%20InstantSearch%20iOS%20(7.25.1);%20ISTelemetry(H4sIAAAAAAAAE3ukLXRAlfEECDGdUGW7oMpwQ5XhkTbnAVVBMJsRzBaBsAFM9M0DLQAAAA%3D%3D);%20Algolia%20insights%20for%20iOS%20(8.18.0), _kCFStreamErrorDomainKey=4}
2023-06-22 01:00:17.968025-0400 Aissistant[79656:27677328] Task <D1E8C85E-796A-4AC1-8B56-D69E7D263AC4>.<1857> finished with error [-1001] Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2102, NSUnderlyingError=0x600006c17a50 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}}, _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <D1E8C85E-796A-4AC1-8B56-D69E7D263AC4>.<1857>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalDataTask <D1E8C85E-796A-4AC1-8B56-D69E7D263AC4>.<1857>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=https://w2p46x4qky-dsn.algolia.net/1/indexes/*/queries?X-Algolia-Agent=iOS%20(16.4);%20Algolia%20for%20Swift%20(8.18.0);%20InstantSearch%20iOS%20(7.25.1);%20ISTelemetry(H4sIAAAAAAAAE3ukLXRAlfEECDGdUGW7oMpwQ5XhkTbnAVVBMJsRzBaBsAFM9M0DLQAAAA%3D%3D);%20Algolia%20insights%20for%20iOS%20(8.18.0), NSErrorFailingURLKey=https://w2p46x4qky-dsn.algolia.net/1/indexes/*/queries?X-Algolia-Agent=iOS%20(16.4);%20Algolia%20for%20Swift%20(8.18.0);%20InstantSearch%20iOS%20(7.25.1);%20ISTelemetry(H4sIAAAAAAAAE3ukLXRAlfEECDGdUGW7oMpwQ5XhkTbnAVVBMJsRzBaBsAFM9M0DLQAAAA%3D%3D);%20Algolia%20insights%20for%20iOS%20(8.18.0), _kCFStreamErrorDomainKey=4}
Thanks for your help
Describe the bug 🐛 I'm building a MacOS app and would like to display returned hits in a grid view. I have a UI that consists of a SearchBar, HitList, and some facets. I've made a CustomHitsList that is identical to HitsList except for using a LazyVGrid instead of a LazyVStack to display the returned hits. When searching, things hang up with what appears to be infinite API calls to the Algolia API. In XCode, I see this:
I've read through #207. I believe it's related and understand the explanation of the behavior, but am wondering if there's any way to make it work with a LazyVGrid.
Expected behavior 💭 Hits are displayed properly in a LazyVGrid without triggering an infinite amount of API calls.
Environment: