Skip to content

Commit 316d2de

Browse files
author
Xiao Chen
committed
fix(amazonq): /doc close diff and open readme after accept change
1 parent 4ca3c89 commit 316d2de

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-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 after user accept changes"
4+
}

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ 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.vfs.LocalFileSystem
1617
import com.intellij.openapi.vfs.VfsUtil
1718
import com.intellij.openapi.wm.ToolWindowManager
1819
import com.intellij.testFramework.LightVirtualFile
@@ -296,8 +297,11 @@ class DocController(
296297
messenger.sendChatInputEnabledMessage(message.tabId, false)
297298
}
298299

300+
private val diffVirtualFiles = mutableMapOf<String, ChainDiffVirtualFile>()
301+
299302
private suspend fun acceptChanges(message: IncomingDocMessage.FollowupClicked) {
300303
insertCode(message.tabId)
304+
previewReadmeFile(message.tabId)
301305
}
302306

303307
private suspend fun promptForDocTarget(tabId: String) {
@@ -418,6 +422,8 @@ class DocController(
418422
request.putUserData(DiffUserDataKeys.FORCE_READ_ONLY, true)
419423

420424
val newDiff = ChainDiffVirtualFile(SimpleDiffRequestChain(request), message.filePath)
425+
426+
diffVirtualFiles[message.filePath] = newDiff
421427
DiffEditorTabFilesManager.getInstance(context.project).showDiffFile(newDiff, true)
422428
}
423429
}
@@ -1037,6 +1043,33 @@ class DocController(
10371043
session.sendDocTelemetryEvent(null, docAcceptanceEvent)
10381044
}
10391045

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

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

0 commit comments

Comments
 (0)