forked from github/CopilotForXcode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathModuleDependency.swift
More file actions
90 lines (75 loc) · 2.77 KB
/
ModuleDependency.swift
File metadata and controls
90 lines (75 loc) · 2.77 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import ActiveApplicationMonitor
import AppKit
import ChatTab
import ComposableArchitecture
import Dependencies
import Foundation
import Preferences
import SwiftUI
import UserDefaultsObserver
import XcodeInspector
public final class SuggestionWidgetControllerDependency {
public var suggestionWidgetDataSource: SuggestionWidgetDataSource?
public var onOpenChatClicked: () -> Void = {}
public var onCustomCommandClicked: (CustomCommand) -> Void = { _ in }
var windowsController: WidgetWindowsController?
public init() {}
}
public final class WidgetUserDefaultsObservers {
let presentationModeChangeObserver = UserDefaultsObserver(
object: UserDefaults.shared,
forKeyPaths: [
UserDefaultPreferenceKeys().suggestionPresentationMode.key,
], context: nil
)
let xcodeColorSchemeChangeObserver = UserDefaultsObserver(
object: UserDefaults(suiteName: "com.apple.dt.Xcode")!,
forKeyPaths: ["xcodeColorScheme"],
context: nil
)
let systemColorSchemeChangeObserver = UserDefaultsObserver(
object: UserDefaults.standard,
forKeyPaths: ["AppleInterfaceStyle"],
context: nil
)
public init() {}
}
struct SuggestionWidgetControllerDependencyKey: DependencyKey {
static let liveValue = SuggestionWidgetControllerDependency()
}
struct UserDefaultsDependencyKey: DependencyKey {
static let liveValue = WidgetUserDefaultsObservers()
}
struct XcodeInspectorKey: DependencyKey {
static let liveValue = XcodeInspector.shared
}
struct ActiveApplicationMonitorKey: DependencyKey {
static let liveValue = ActiveApplicationMonitor.shared
}
struct ChatTabBuilderCollectionKey: DependencyKey {
static let liveValue: () -> [ChatTabBuilderCollection] = { [] }
}
public extension DependencyValues {
var suggestionWidgetControllerDependency: SuggestionWidgetControllerDependency {
get { self[SuggestionWidgetControllerDependencyKey.self] }
set { self[SuggestionWidgetControllerDependencyKey.self] = newValue }
}
var suggestionWidgetUserDefaultsObservers: WidgetUserDefaultsObservers {
get { self[UserDefaultsDependencyKey.self] }
set { self[UserDefaultsDependencyKey.self] = newValue }
}
var chatTabBuilderCollection: () -> [ChatTabBuilderCollection] {
get { self[ChatTabBuilderCollectionKey.self] }
set { self[ChatTabBuilderCollectionKey.self] = newValue }
}
}
extension DependencyValues {
var xcodeInspector: XcodeInspector {
get { self[XcodeInspectorKey.self] }
set { self[XcodeInspectorKey.self] = newValue }
}
var activeApplicationMonitor: ActiveApplicationMonitor {
get { self[ActiveApplicationMonitorKey.self] }
set { self[ActiveApplicationMonitorKey.self] = newValue }
}
}