Skip to content

Commit 0016e3b

Browse files
authored
Fix: #1035 finding in project bug (#1268)
fix: #1035 finding in project bug - No results display when finding - Found results count
1 parent 9bdc058 commit 0016e3b

File tree

4 files changed

+18
-30
lines changed

4 files changed

+18
-30
lines changed

CodeEdit/Features/Documents/WorkspaceDocument+Search.swift

+2-6
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@ extension WorkspaceDocument {
1717
]
1818
@Published var searchResult: [SearchResultModel] = []
1919
@Published var searchResultCount: Int = 0
20-
/// A unique ID for the current search results. Used to "re-search" with the same
21-
/// search text but refresh results and UI.
22-
@Published var searchId: UUID?
2320

2421
var ignoreCase: Bool = true
2522

@@ -40,13 +37,12 @@ extension WorkspaceDocument {
4037
guard let text else {
4138
searchResult = []
4239
searchResultCount = 0
43-
searchId = nil
4440
return
4541
}
4642

4743
let textToCompare = ignoreCase ? text.lowercased() : text
4844
self.searchResult = []
49-
self.searchId = UUID()
45+
self.searchResultCount = 0
5046
guard let url = self.workspace.fileURL else { return }
5147
let enumerator = FileManager.default.enumerator(
5248
at: url,
@@ -109,7 +105,7 @@ extension WorkspaceDocument {
109105
lineMatches: matches
110106
)
111107
}
112-
searchResultCount += 1
108+
searchResultCount += matches.count
113109
}
114110
}
115111

CodeEdit/Features/NavigatorSidebar/FindNavigator/FindNavigatorResultList/FindNavigatorListViewController.swift

+4-10
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ final class FindNavigatorListViewController: NSViewController {
1212
public var workspace: WorkspaceDocument
1313
public var selectedItem: Any?
1414

15-
private var searchId: UUID?
1615
private var searchItems: [SearchResultModel] = []
1716
private var scrollView: NSScrollView!
1817
private var outlineView: NSOutlineView!
@@ -64,15 +63,10 @@ final class FindNavigatorListViewController: NSViewController {
6463

6564
/// Updates the view with new search results and updates the UI.
6665
/// - Parameter searchItems: The search items to set.
67-
/// - Parameter searchText: The search text, used to preserve result deletions across view updates.
68-
public func updateNewSearchResults(_ searchItems: [SearchResultModel], searchId: UUID?) {
69-
if searchId != self.searchId {
70-
self.searchItems = searchItems
71-
outlineView.reloadData()
72-
outlineView.expandItem(nil, expandChildren: true)
73-
74-
self.searchId = searchId
75-
}
66+
public func updateNewSearchResults(_ searchItems: [SearchResultModel]) {
67+
self.searchItems = searchItems
68+
outlineView.reloadData()
69+
outlineView.expandItem(nil, expandChildren: true)
7670

7771
if let selectedItem {
7872
selectSearchResult(selectedItem)

CodeEdit/Features/NavigatorSidebar/FindNavigator/FindNavigatorResultList/FindNavigatorResultList.swift

+3-7
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ struct FindNavigatorResultList: NSViewControllerRepresentable {
2727

2828
func updateNSViewController(_ nsViewController: FindNavigatorListViewController, context: Context) {
2929
nsViewController.updateNewSearchResults(
30-
workspace.searchState?.searchResult ?? [],
31-
searchId: workspace.searchState?.searchId
30+
workspace.searchState?.searchResult ?? []
3231
)
3332
if nsViewController.rowHeight != projectNavigatorSize.rowHeight {
3433
nsViewController.rowHeight = projectNavigatorSize.rowHeight
@@ -48,12 +47,9 @@ struct FindNavigatorResultList: NSViewControllerRepresentable {
4847
self.controller = controller
4948
super.init()
5049
self.listener = state?
51-
.searchResult
52-
.publisher
53-
.receive(on: RunLoop.main)
54-
.collect()
50+
.$searchResult
5551
.sink(receiveValue: { [weak self] searchResults in
56-
self?.controller?.updateNewSearchResults(searchResults, searchId: state?.searchId)
52+
self?.controller?.updateNewSearchResults(searchResults)
5753
})
5854
}
5955

CodeEdit/Features/NavigatorSidebar/FindNavigator/FindNavigatorView.swift

+9-7
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,11 @@ struct FindNavigatorView: View {
2626

2727
@State var currentFilter: String = ""
2828

29-
private var foundFilesCount: Int {
30-
state.searchResult.count
31-
}
29+
@State
30+
private var foundFilesCount: Int = 0
3231

33-
private var foundResultsCount: Int {
34-
state.searchResult.count
35-
}
32+
@State
33+
private var searchResultCount: Int = 0
3634

3735
var body: some View {
3836
VStack {
@@ -82,7 +80,7 @@ struct FindNavigatorView: View {
8280
.padding(.vertical, 5)
8381
Divider()
8482
HStack(alignment: .center) {
85-
Text("\(state.searchResultCount) results in \(foundFilesCount) files")
83+
Text("\(self.searchResultCount) results in \(self.foundFilesCount) files")
8684
.font(.system(size: 10))
8785
}
8886
Divider()
@@ -91,5 +89,9 @@ struct FindNavigatorView: View {
9189
.onSubmit {
9290
state.search(searchText)
9391
}
92+
.onReceive(state.objectWillChange) { _ in
93+
self.searchResultCount = state.searchResultCount
94+
self.foundFilesCount = state.searchResult.count
95+
}
9496
}
9597
}

0 commit comments

Comments
 (0)