Skip to content

Commit aeb5870

Browse files
committed
Prevent auto trigger from triggering when the current window does not have realtime suggestion on
1 parent 0c8193f commit aeb5870

2 files changed

Lines changed: 18 additions & 13 deletions

File tree

Core/Sources/Service/AutoTrigger.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,13 @@ actor AutoTrigger {
1919
for await _ in stream {
2020
triggerTask?.cancel()
2121
if Task.isCancelled { break }
22-
triggerTask = Task {
22+
triggerTask = Task { @ServiceActor in
2323
try? await Task.sleep(nanoseconds: 2_000_000_000)
2424
if Task.isCancelled { return }
25+
guard let folderURL = try? await Environment.fetchCurrentProjectRootURL(),
26+
let workspace = workspaces[folderURL],
27+
workspace.isRealtimeSuggestionEnabled
28+
else { return }
2529
try? await Environment.triggerAction("Realtime Suggestions")
2630
}
2731
}

Core/Sources/Service/XPCService.swift

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,25 @@ import XPCShared
99
public static let shared = TheActor()
1010
}
1111

12+
@ServiceActor
13+
var workspaces = [URL: Workspace]()
14+
1215
public class XPCService: NSObject, XPCServiceProtocol {
1316
@ServiceActor
1417
lazy var authService: CopilotAuthServiceType = Environment.createAuthService()
15-
@ServiceActor
16-
var workspaces = [URL: Workspace]()
1718

1819
override public init() {
1920
super.init()
2021
let identifier = ObjectIdentifier(self)
2122
Task {
2223
await AutoTrigger.shared.start(by: identifier)
2324
}
24-
Task { @ServiceActor [weak self] in
25-
while let self, !Task.isCancelled {
25+
Task { @ServiceActor in
26+
while !Task.isCancelled {
2627
try await Task.sleep(nanoseconds: 8 * 60 * 60 * 1_000_000_000)
27-
for (url, workspace) in self.workspaces {
28+
for (url, workspace) in workspaces {
2829
if workspace.isExpired {
29-
self.workspaces[url] = nil
30+
workspaces[url] = nil
3031
} else {
3132
workspace.cleanUp()
3233
}
@@ -106,7 +107,7 @@ public class XPCService: NSObject, XPCServiceProtocol {
106107
let editor = try JSONDecoder().decode(EditorContent.self, from: editorContent)
107108
let fileURL = try await Environment.fetchCurrentFileURL()
108109
let workspace = try await fetchOrCreateWorkspaceIfNeeded(fileURL: fileURL)
109-
110+
110111
let updatedContent = try await workspace.getSuggestedCode(
111112
forFileAt: fileURL,
112113
content: editor.content,
@@ -133,7 +134,7 @@ public class XPCService: NSObject, XPCServiceProtocol {
133134
let editor = try JSONDecoder().decode(EditorContent.self, from: editorContent)
134135
let fileURL = try await Environment.fetchCurrentFileURL()
135136
let workspace = try await fetchOrCreateWorkspaceIfNeeded(fileURL: fileURL)
136-
137+
137138
let updatedContent = workspace.getNextSuggestedCode(
138139
forFileAt: fileURL,
139140
content: editor.content,
@@ -157,7 +158,7 @@ public class XPCService: NSObject, XPCServiceProtocol {
157158
let editor = try JSONDecoder().decode(EditorContent.self, from: editorContent)
158159
let fileURL = try await Environment.fetchCurrentFileURL()
159160
let workspace = try await fetchOrCreateWorkspaceIfNeeded(fileURL: fileURL)
160-
161+
161162
let updatedContent = workspace.getPreviousSuggestedCode(
162163
forFileAt: fileURL,
163164
content: editor.content,
@@ -181,7 +182,7 @@ public class XPCService: NSObject, XPCServiceProtocol {
181182
let editor = try JSONDecoder().decode(EditorContent.self, from: editorContent)
182183
let fileURL = try await Environment.fetchCurrentFileURL()
183184
let workspace = try await fetchOrCreateWorkspaceIfNeeded(fileURL: fileURL)
184-
185+
185186
let updatedContent = workspace.getSuggestionRejectedCode(
186187
forFileAt: fileURL,
187188
content: editor.content,
@@ -205,7 +206,7 @@ public class XPCService: NSObject, XPCServiceProtocol {
205206
let editor = try JSONDecoder().decode(EditorContent.self, from: editorContent)
206207
let fileURL = try await Environment.fetchCurrentFileURL()
207208
let workspace = try await fetchOrCreateWorkspaceIfNeeded(fileURL: fileURL)
208-
209+
209210
let updatedContent = workspace.getSuggestionAcceptedCode(
210211
forFileAt: fileURL,
211212
content: editor.content,
@@ -229,7 +230,7 @@ public class XPCService: NSObject, XPCServiceProtocol {
229230
let editor = try JSONDecoder().decode(EditorContent.self, from: editorContent)
230231
let fileURL = try await Environment.fetchCurrentFileURL()
231232
let workspace = try await fetchOrCreateWorkspaceIfNeeded(fileURL: fileURL)
232-
233+
233234
let canAutoTrigger = workspace.canAutoTriggerGetSuggestions(
234235
forFileAt: fileURL,
235236
lines: editor.lines,

0 commit comments

Comments
 (0)