Improve screen capture timing and logic for power mode switching

This commit is contained in:
Beingpax 2025-05-29 18:09:48 +05:45
parent e5472a0850
commit 652fca9d87
2 changed files with 19 additions and 6 deletions

View File

@ -72,6 +72,13 @@ class ActiveWindowService: ObservableObject {
func applyConfiguration(_ config: PowerModeConfig) async {
guard let enhancementService = enhancementService else { return }
// Capture current state before making changes
let wasScreenCaptureEnabled = await MainActor.run {
enhancementService.useScreenCaptureContext
}
let wasEnhancementEnabled = await MainActor.run {
enhancementService.isEnhancementEnabled
}
await MainActor.run {
enhancementService.isEnhancementEnabled = config.isAIEnhancementEnabled
@ -126,5 +133,17 @@ class ActiveWindowService: ObservableObject {
}
}
}
// Capture screen context at the end after a brief delay to ensure all changes are settled
// and either enhancement is newly enabled or screen capture is newly enabled
if config.isAIEnhancementEnabled && config.useScreenCapture {
let shouldCaptureScreen = !wasEnhancementEnabled || !wasScreenCaptureEnabled
if shouldCaptureScreen {
// Wait a moment for UI changes and content loading to complete
try? await Task.sleep(nanoseconds: 1_500_000_000) // 1.5 seconds
await enhancementService.captureScreenContext()
}
}
}
}

View File

@ -20,12 +20,6 @@ class AIEnhancementService: ObservableObject {
if isEnhancementEnabled && selectedPromptId == nil {
selectedPromptId = customPrompts.first?.id
}
if isEnhancementEnabled && useScreenCaptureContext {
Task {
await captureScreenContext()
}
}
}
}
@Published var useClipboardContext: Bool {