-
-
Notifications
You must be signed in to change notification settings - Fork 427
Expand file tree
/
Copy pathModuleDependency.swift
More file actions
100 lines (84 loc) · 3.02 KB
/
ModuleDependency.swift
File metadata and controls
100 lines (84 loc) · 3.02 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
90
91
92
93
94
95
96
97
98
99
import ActiveApplicationMonitor
import AppKit
import ComposableArchitecture
import Dependencies
import Foundation
import Preferences
import UserDefaultsObserver
import XcodeInspector
public final class SuggestionWidgetControllerDependency {
public var suggestionWidgetDataSource: SuggestionWidgetDataSource?
public var onOpenChatClicked: () -> Void = {}
public var onCustomCommandClicked: (CustomCommand) -> Void = { _ in }
}
@MainActor
public final class Windows {
var fullscreenDetector: NSWindow!
var widgetWindow: NSWindow!
var tabWindow: NSWindow!
var sharedPanelWindow: NSWindow!
var suggestionPanelWindow: NSWindow!
var chatPanelWindow: NSWindow!
nonisolated
init() {}
func orderFront() {
widgetWindow?.orderFrontRegardless()
tabWindow?.orderFrontRegardless()
sharedPanelWindow?.orderFrontRegardless()
suggestionPanelWindow?.orderFrontRegardless()
chatPanelWindow?.orderFrontRegardless()
}
}
public final class UserDefaultsObservers {
let presentationModeChangeObserver = UserDefaultsObserver(
object: UserDefaults.shared,
forKeyPaths: [
UserDefaultPreferenceKeys().suggestionPresentationMode.key,
], context: nil
)
let colorSchemeChangeObserver = UserDefaultsObserver(
object: UserDefaults.shared, forKeyPaths: [
UserDefaultPreferenceKeys().widgetColorScheme.key,
], context: nil
)
let systemColorSchemeChangeObserver = UserDefaultsObserver(
object: UserDefaults.standard, forKeyPaths: ["AppleInterfaceStyle"], context: nil
)
}
struct SuggestionWidgetControllerDependencyKey: DependencyKey {
static let liveValue = SuggestionWidgetControllerDependency()
}
struct WindowsDependencyKey: DependencyKey {
static let liveValue = Windows()
}
struct UserDefaultsDependencyKey: DependencyKey {
static let liveValue = UserDefaultsObservers()
}
struct XcodeInspectorKey: DependencyKey {
static let liveValue = XcodeInspector.shared
}
struct ActiveApplicationMonitorKey: DependencyKey {
static let liveValue = ActiveApplicationMonitor.self
}
extension DependencyValues {
var suggestionWidgetControllerDependency: SuggestionWidgetControllerDependency {
get { self[SuggestionWidgetControllerDependencyKey.self] }
set { self[SuggestionWidgetControllerDependencyKey.self] = newValue }
}
var windows: Windows {
get { self[WindowsDependencyKey.self] }
set { self[WindowsDependencyKey.self] = newValue }
}
var userDefaultsObservers: UserDefaultsObservers {
get { self[UserDefaultsDependencyKey.self] }
set { self[UserDefaultsDependencyKey.self] = newValue }
}
var xcodeInspector: XcodeInspector {
get { self[XcodeInspectorKey.self] }
set { self[XcodeInspectorKey.self] = newValue }
}
var activeApplicationMonitor: ActiveApplicationMonitor.Type {
get { self[ActiveApplicationMonitorKey.self] }
set { self[ActiveApplicationMonitorKey.self] = newValue }
}
}