Skip to content

Commit bfeb590

Browse files
committed
Handle dismiss suggestions event
1 parent f7f5f79 commit bfeb590

3 files changed

Lines changed: 31 additions & 0 deletions

File tree

Core/Sources/SuggestionService/SuggestionService.swift

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,13 @@ public extension SuggestionService {
118118
eventHandlers.forEach { $0.didReject(suggestions, workspaceInfo: workspaceInfo) }
119119
await suggestionProvider.notifyRejected(suggestions, workspaceInfo: workspaceInfo)
120120
}
121+
122+
func notifyDismissed(
123+
_ suggestions: [SuggestionBasic.CodeSuggestion],
124+
workspaceInfo: CopilotForXcodeKit.WorkspaceInfo
125+
) async {
126+
eventHandlers.forEach { $0.didDismiss(suggestions, workspaceInfo: workspaceInfo) }
127+
}
121128

122129
func cancelRequest(workspaceInfo: CopilotForXcodeKit.WorkspaceInfo) async {
123130
await suggestionProvider.cancelRequest(workspaceInfo: workspaceInfo)

Tool/Sources/SuggestionProvider/SuggestionServiceEventHandler.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import SuggestionBasic
55
public protocol SuggestionServiceEventHandler {
66
func didAccept(_ suggestion: SuggestionBasic.CodeSuggestion, workspaceInfo: WorkspaceInfo)
77
func didReject(_ suggestions: [SuggestionBasic.CodeSuggestion], workspaceInfo: WorkspaceInfo)
8+
func didDismiss(_ suggestions: [SuggestionBasic.CodeSuggestion], workspaceInfo: WorkspaceInfo)
89
}
910

1011
public enum SuggestionServiceEventHandlerContainer {

Tool/Sources/WorkspaceSuggestionService/Workspace+SuggestionService.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ public protocol SuggestionServiceType {
1919
_ suggestions: [CodeSuggestion],
2020
workspaceInfo: CopilotForXcodeKit.WorkspaceInfo
2121
) async
22+
func notifyDismissed(
23+
_ suggestions: [CodeSuggestion],
24+
workspaceInfo: CopilotForXcodeKit.WorkspaceInfo
25+
) async
2226
func cancelRequest(workspaceInfo: CopilotForXcodeKit.WorkspaceInfo) async
2327

2428
var configuration: SuggestionServiceConfiguration { get async }
@@ -230,7 +234,26 @@ public extension Workspace {
230234
func dismissSuggestions(forFileAt fileURL: URL) {
231235
refreshUpdateTime()
232236
guard let filespace = filespaces[fileURL] else { return }
237+
let displayedSuggestions = filespace.suggestionManager?.displaySuggestions.flatMap {
238+
switch $0 {
239+
case let .action(action):
240+
return [action.suggestion]
241+
case let .group(group):
242+
return group.suggestions
243+
}
244+
} ?? []
245+
233246
filespace.suggestionManager?.invalidateDisplaySuggestions()
247+
248+
Task {
249+
await suggestionService?.notifyDismissed(
250+
displayedSuggestions,
251+
workspaceInfo: .init(
252+
workspaceURL: workspaceURL,
253+
projectURL: projectRootURL
254+
)
255+
)
256+
}
234257
}
235258
}
236259

0 commit comments

Comments
 (0)