From a85cc65a0384dd92f56af1e1637c7492f1d9ef91 Mon Sep 17 00:00:00 2001 From: AkhilKonduru1 Date: Wed, 18 Mar 2026 17:03:50 +0000 Subject: [PATCH 1/3] fixed more --- .../components/ScreenAssistant/ChatPanels.swift | 1 + .../managers/ScreenAssistantManager.swift | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/DynamicIsland/components/ScreenAssistant/ChatPanels.swift b/DynamicIsland/components/ScreenAssistant/ChatPanels.swift index 69b0f60..095d491 100644 --- a/DynamicIsland/components/ScreenAssistant/ChatPanels.swift +++ b/DynamicIsland/components/ScreenAssistant/ChatPanels.swift @@ -219,6 +219,7 @@ struct ChatMessagesView: View { .background(Color.gray.opacity(0.12)) .cornerRadius(8) } + .disabled(screenAssistantManager.isLoading) .buttonStyle(PlainButtonStyle()) .help("Clear conversation and attachments") diff --git a/DynamicIsland/managers/ScreenAssistantManager.swift b/DynamicIsland/managers/ScreenAssistantManager.swift index a1912a5..eec5ef7 100644 --- a/DynamicIsland/managers/ScreenAssistantManager.swift +++ b/DynamicIsland/managers/ScreenAssistantManager.swift @@ -120,6 +120,7 @@ class ScreenAssistantManager: NSObject, ObservableObject { private var audioRecorder: AVAudioRecorder? private var recordingTimer: Timer? + private var activeRequest: URLSessionTask? // Panel management private var chatMessagesPanel: ChatMessagesPanel? @@ -668,6 +669,7 @@ class ScreenAssistantManager: NSObject, ObservableObject { } } + activeRequest = task task.resume() } @@ -694,6 +696,7 @@ class ScreenAssistantManager: NSObject, ObservableObject { } } + activeRequest = task task.resume() } @@ -721,6 +724,7 @@ class ScreenAssistantManager: NSObject, ObservableObject { } } + activeRequest = task task.resume() } @@ -728,6 +732,13 @@ class ScreenAssistantManager: NSObject, ObservableObject { private func handleResponse(data: Data?, response: URLResponse?, error: Error?, provider: AIModelProvider) { isLoading = false + activeRequest = nil + + // Check if the request was cancelled (e.g., by resetConversationContext) + if let error = error as? NSError, error.code == NSURLErrorCancelled { + print("ℹ️ ScreenAssistant: Request was cancelled") + return + } if let error = error { print("❌ ScreenAssistant: Network error - \(error)") @@ -1107,6 +1118,10 @@ class ScreenAssistantManager: NSObject, ObservableObject { } func resetConversationContext() { + // Cancel any in-flight request + activeRequest?.cancel() + activeRequest = nil + isLoading = false chatMessages.removeAll() clearAllFiles() From cafd0290d4e1eca0d3ae9f5dd200269b2d9d8580 Mon Sep 17 00:00:00 2001 From: AkhilKonduru1 Date: Wed, 18 Mar 2026 12:07:53 -0500 Subject: [PATCH 2/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- DynamicIsland/managers/ScreenAssistantManager.swift | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/DynamicIsland/managers/ScreenAssistantManager.swift b/DynamicIsland/managers/ScreenAssistantManager.swift index eec5ef7..6e58a18 100644 --- a/DynamicIsland/managers/ScreenAssistantManager.swift +++ b/DynamicIsland/managers/ScreenAssistantManager.swift @@ -720,6 +720,13 @@ class ScreenAssistantManager: NSObject, ObservableObject { let task = URLSession.shared.dataTask(with: request) { [weak self] data, response, error in DispatchQueue.main.async { guard let self = self else { return } + + // Ensure this callback belongs to the current in-flight request + guard self.activeRequest === task else { return } + + self.isLoading = false + self.activeRequest = nil + self.handleResponse(data: data, response: response, error: error, provider: .claude) } } @@ -731,9 +738,6 @@ class ScreenAssistantManager: NSObject, ObservableObject { // MARK: - Response Handlers private func handleResponse(data: Data?, response: URLResponse?, error: Error?, provider: AIModelProvider) { - isLoading = false - activeRequest = nil - // Check if the request was cancelled (e.g., by resetConversationContext) if let error = error as? NSError, error.code == NSURLErrorCancelled { print("ℹ️ ScreenAssistant: Request was cancelled") From 18766e78859264a3e98aadb0f06ac4aaef5c878f Mon Sep 17 00:00:00 2001 From: Hariharan Mudaliar Date: Thu, 19 Mar 2026 21:42:02 +0530 Subject: [PATCH 3/3] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../managers/ScreenAssistantManager.swift | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/DynamicIsland/managers/ScreenAssistantManager.swift b/DynamicIsland/managers/ScreenAssistantManager.swift index 6e58a18..da0a0cd 100644 --- a/DynamicIsland/managers/ScreenAssistantManager.swift +++ b/DynamicIsland/managers/ScreenAssistantManager.swift @@ -665,6 +665,13 @@ class ScreenAssistantManager: NSObject, ObservableObject { let task = URLSession.shared.dataTask(with: request) { [weak self] data, response, error in DispatchQueue.main.async { guard let self = self else { return } + + // Ensure this callback belongs to the current in-flight request + guard self.activeRequest === task else { return } + + self.isLoading = false + self.activeRequest = nil + self.handleResponse(data: data, response: response, error: error, provider: provider) } } @@ -692,6 +699,13 @@ class ScreenAssistantManager: NSObject, ObservableObject { let task = URLSession.shared.dataTask(with: request) { [weak self] data, response, error in DispatchQueue.main.async { guard let self = self else { return } + + // Ensure this callback belongs to the current in-flight request + guard self.activeRequest === task else { return } + + self.isLoading = false + self.activeRequest = nil + self.handleResponse(data: data, response: response, error: error, provider: .openai) } }