Skip to content

Commit ad5ea31

Browse files
committed
Use computed predicate for each view update
1 parent 10fd670 commit ad5ea31

File tree

1 file changed

+4
-8
lines changed

1 file changed

+4
-8
lines changed

Views/Library/ZimFilesNew.swift

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,12 @@ struct ZimFilesNew: View {
2828
NSSortDescriptor(keyPath: \ZimFile.name, ascending: true),
2929
NSSortDescriptor(keyPath: \ZimFile.size, ascending: false)
3030
],
31-
predicate: ZimFilesNew.buildPredicate(searchText: ""),
3231
animation: .easeInOut
3332
) private var zimFiles: FetchedResults<ZimFile>
3433
@State private var searchText = ""
34+
private var filterPredicate: NSPredicate {
35+
ZimFilesNew.buildPredicate(searchText: searchText)
36+
}
3537
let dismiss: (() -> Void)? // iOS only
3638

3739
var body: some View {
@@ -40,7 +42,7 @@ struct ZimFilesNew: View {
4042
alignment: .leading,
4143
spacing: 12
4244
) {
43-
ForEach(zimFiles) { zimFile in
45+
ForEach(zimFiles.filter { filterPredicate.evaluate(with: $0) }) { zimFile in
4446
ZimFileCell(zimFile, prominent: .name)
4547
.modifier(LibraryZimFileContext(zimFile: zimFile, dismiss: dismiss))
4648
}
@@ -52,12 +54,6 @@ struct ZimFilesNew: View {
5254
.onAppear {
5355
viewModel.start(isUserInitiated: false)
5456
}
55-
.onChange(of: languageCodes) { _ in
56-
zimFiles.nsPredicate = ZimFilesNew.buildPredicate(searchText: searchText)
57-
}
58-
.onChange(of: searchText) { searchText in
59-
zimFiles.nsPredicate = ZimFilesNew.buildPredicate(searchText: searchText)
60-
}
6157
.overlay {
6258
if zimFiles.isEmpty {
6359
switch viewModel.state {

0 commit comments

Comments
 (0)