forked from intitni/CopilotForXcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommandHandler.swift
More file actions
65 lines (50 loc) · 1.85 KB
/
CommandHandler.swift
File metadata and controls
65 lines (50 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import Dependencies
import Foundation
import Preferences
import SuggestionBasic
import Toast
import XcodeInspector
/// Provides an interface to handle commands.
public protocol CommandHandler {
// MARK: Suggestion
func presentSuggestions(_ suggestions: [CodeSuggestion]) async
func presentPreviousSuggestion() async
func presentNextSuggestion() async
func rejectSuggestions() async
func acceptSuggestion() async
func dismissSuggestion() async
func generateRealtimeSuggestions(sourceEditor: SourceEditor?) async
// MARK: Chat
func openChat(forceDetach: Bool)
func sendChatMessage(_ message: String) async
// MARK: Prompt to Code
func acceptPromptToCode() async
// MARK: Custom Command
func handleCustomCommand(_ command: CustomCommand) async
// MARK: Toast
func toast(_ string: String, as type: ToastType)
}
public struct CommandHandlerDependencyKey: DependencyKey {
public static var liveValue: CommandHandler = NoopCommandHandler()
}
public extension DependencyValues {
var commandHandler: CommandHandler {
get { self[CommandHandlerDependencyKey.self] }
set { self[CommandHandlerDependencyKey.self] = newValue }
}
}
struct NoopCommandHandler: CommandHandler {
static let shared: CommandHandler = NoopCommandHandler()
func presentSuggestions(_: [CodeSuggestion]) async {}
func presentPreviousSuggestion() async {}
func presentNextSuggestion() async {}
func rejectSuggestions() async {}
func acceptSuggestion() async {}
func dismissSuggestion() async {}
func generateRealtimeSuggestions(sourceEditor: SourceEditor?) async {}
func openChat(forceDetach: Bool) {}
func sendChatMessage(_: String) async {}
func acceptPromptToCode() async {}
func handleCustomCommand(_: CustomCommand) async {}
func toast(_: String, as: ToastType) {}
}