Skip to content

Commit 18e783f

Browse files
authored
Fix freezing UI for long running validation when clicking transform (#4023)
1 parent e7f8182 commit 18e783f

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"type" : "bugfix",
3+
"description" : "Amazon Q Transform: Fix an issue where the IDE may freeze after clicking \"Transform\""
4+
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/codemodernizer/CodeModernizerManager.kt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -189,15 +189,20 @@ class CodeModernizerManager(private val project: Project) : PersistentStateCompo
189189
codeModernizerBottomWindowPanelManager.setJobStartingUI()
190190
}
191191

192-
fun validateAndStart(srcStartComponent: CodeTransformStartSrcComponents = CodeTransformStartSrcComponents.DevToolsStartButton) {
193-
val validationResult = validate(project)
194-
sendValidationResultTelemetry(validationResult, srcStartComponent)
195-
if (validationResult.valid) {
196-
runModernize()
197-
} else {
198-
warnUnsupportedProject(validationResult.invalidReason)
192+
fun validateAndStart(srcStartComponent: CodeTransformStartSrcComponents = CodeTransformStartSrcComponents.DevToolsStartButton) =
193+
projectCoroutineScope(project).launch {
194+
if (isModernizationInProgress.getAndSet(true)) return@launch
195+
val validationResult = validate(project)
196+
runInEdt {
197+
if (validationResult.valid) {
198+
runModernize()
199+
} else {
200+
warnUnsupportedProject(validationResult.invalidReason)
201+
isModernizationInProgress.set(false)
202+
}
203+
}
204+
sendValidationResultTelemetry(validationResult, srcStartComponent)
199205
}
200-
}
201206

202207
private fun sendValidationResultTelemetry(validationResult: ValidationResult, srcStartComponent: CodeTransformStartSrcComponents) {
203208
CodeTransformTelemetryState.instance.setSessionId()

0 commit comments

Comments
 (0)