Skip to content

Commit be9d8ff

Browse files
author
Xiao Chen
committed
fix(amazonq): /doc close diff and open readme in preview mode after accept change
1 parent a4f5c07 commit be9d8ff

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
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 /doc: close diff tab and open README file in preview mode after user accept changes"
4+
}

plugins/amazonq/chat/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonqDoc/controller/DocController.kt

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ import com.intellij.diff.util.DiffUserDataKeys
1313
import com.intellij.ide.BrowserUtil
1414
import com.intellij.openapi.application.runInEdt
1515
import com.intellij.openapi.fileEditor.FileEditorManager
16+
import com.intellij.openapi.fileEditor.TextEditorWithPreview
17+
import com.intellij.openapi.vfs.LocalFileSystem
1618
import com.intellij.openapi.vfs.VfsUtil
19+
import com.intellij.openapi.vfs.originalFileOrSelf
1720
import com.intellij.openapi.wm.ToolWindowManager
1821
import com.intellij.testFramework.LightVirtualFile
1922
import kotlinx.coroutines.withContext
@@ -296,8 +299,11 @@ class DocController(
296299
messenger.sendChatInputEnabledMessage(message.tabId, false)
297300
}
298301

302+
private val diffVirtualFiles = mutableMapOf<String, ChainDiffVirtualFile>()
303+
299304
private suspend fun acceptChanges(message: IncomingDocMessage.FollowupClicked) {
300305
insertCode(message.tabId)
306+
previewReadmeFile(message.tabId)
301307
}
302308

303309
private suspend fun promptForDocTarget(tabId: String) {
@@ -418,6 +424,8 @@ class DocController(
418424
request.putUserData(DiffUserDataKeys.FORCE_READ_ONLY, true)
419425

420426
val newDiff = ChainDiffVirtualFile(SimpleDiffRequestChain(request), message.filePath)
427+
428+
diffVirtualFiles[message.filePath] = newDiff
421429
DiffEditorTabFilesManager.getInstance(context.project).showDiffFile(newDiff, true)
422430
}
423431
}
@@ -1037,6 +1045,34 @@ class DocController(
10371045
session.sendDocTelemetryEvent(null, docAcceptanceEvent)
10381046
}
10391047

1048+
private fun previewReadmeFile(tabId: String) {
1049+
val session = getSessionInfo(tabId)
1050+
var filePaths: List<NewFileZipInfo> = emptyList()
1051+
1052+
when (val state = session.sessionState) {
1053+
is PrepareDocGenerationState -> {
1054+
filePaths = state.filePaths
1055+
}
1056+
}
1057+
if (filePaths.isNotEmpty()) {
1058+
val filePath = filePaths[0].zipFilePath
1059+
val existingDiff = diffVirtualFiles[filePath]
1060+
1061+
val newFilePath = session.context.addressableRoot.toNioPath().resolve(filePath)
1062+
val readmeVirtualFile = LocalFileSystem.getInstance().refreshAndFindFileByPath(newFilePath.toString())
1063+
1064+
runInEdt {
1065+
if (existingDiff != null) {
1066+
FileEditorManager.getInstance(getProject()).closeFile(existingDiff)
1067+
}
1068+
if (readmeVirtualFile != null) {
1069+
TextEditorWithPreview.openPreviewForFile(getProject(), readmeVirtualFile.originalFileOrSelf())
1070+
1071+
}
1072+
}
1073+
}
1074+
}
1075+
10401076
fun getProject() = context.project
10411077

10421078
private fun getSessionInfo(tabId: String) = chatSessionStorage.getSession(tabId, context.project)

0 commit comments

Comments
 (0)