Skip to content

Commit 70cb34a

Browse files
authored
All recent projects searchable in Spotlight (#1680)
* keyboard shortcut for tab switching * extension and menu bar * resolve swiftlint violations * searchable in spotlight * move function to bottom * remove unneeded casting and add error handling * remove CSSearchableItem type * no success message, space between funcs, and no public func * fix whitespace violation
1 parent d1ee5ac commit 70cb34a

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

CodeEdit/Features/Welcome/Views/RecentProjectsListView.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
//
77

88
import SwiftUI
9+
import CoreSpotlight
910

1011
struct RecentProjectsListView: View {
1112

@@ -25,6 +26,7 @@ struct RecentProjectsListView: View {
2526
let projectsURL = recentProjectPaths.map { URL(filePath: $0) }
2627
_selection = .init(initialValue: Set(projectsURL.prefix(1)))
2728
_recentProjects = .init(initialValue: projectsURL)
29+
donateSearchableItems()
2830
}
2931

3032
var listEmptyView: some View {
@@ -118,4 +120,22 @@ struct RecentProjectsListView: View {
118120
let projectsURL = recentProjectPaths.map { URL(filePath: $0) }
119121
recentProjects = projectsURL
120122
}
123+
124+
func donateSearchableItems() {
125+
let searchableItems = recentProjects.map { entity in
126+
let attributeSet = CSSearchableItemAttributeSet(contentType: .content)
127+
attributeSet.title = entity.lastPathComponent
128+
attributeSet.relatedUniqueIdentifier = entity.path()
129+
return CSSearchableItem(
130+
uniqueIdentifier: entity.path(),
131+
domainIdentifier: "app.codeedit.CodeEdit.ProjectItem",
132+
attributeSet: attributeSet
133+
)
134+
}
135+
CSSearchableIndex.default().indexSearchableItems(searchableItems) { error in
136+
if let error = error {
137+
print(error)
138+
}
139+
}
140+
}
121141
}

0 commit comments

Comments
 (0)