Skip to content

Commit a1c97bc

Browse files
committed
refactor: simplify nested map access and improve readability
1 parent 8aded10 commit a1c97bc

File tree

5 files changed

+23
-24
lines changed

5 files changed

+23
-24
lines changed

extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/CoreMessengerManager.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.continuedev.continueintellijextension.`continue`
22

33
import com.github.continuedev.continueintellijextension.services.TelemetryService
4+
import com.github.continuedev.continueintellijextension.utils.castNestedOrNull
45
import com.github.continuedev.continueintellijextension.utils.getMachineUniqueID
56
import com.intellij.ide.plugins.PluginManager
67
import com.intellij.openapi.components.service
@@ -59,12 +60,8 @@ class CoreMessengerManager(
5960
coreMessenger = CoreMessenger(project, continueCorePath, ideProtocolClient, coroutineScope)
6061

6162
coreMessenger?.request("config/getSerializedProfileInfo", null, null) { response ->
62-
val responseObject = response as Map<*, *>
63-
val responseContent = responseObject["content"] as Map<*, *>
64-
val result = responseContent["result"] as Map<*, *>
65-
val config = result["config"] as Map<String, Any>
63+
val allowAnonymousTelemetry = response.castNestedOrNull<Boolean>("content", "result", "config", "allowAnonymousTelemetry")
6664

67-
val allowAnonymousTelemetry = config?.get("allowAnonymousTelemetry") as? Boolean
6865
val telemetryService = service<TelemetryService>()
6966
if (allowAnonymousTelemetry == true || allowAnonymousTelemetry == null) {
7067
telemetryService.setup(getMachineUniqueID())

extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/continue/IdeProtocolClient.kt

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -486,18 +486,10 @@ class IdeProtocolClient(
486486
null
487487
) { response ->
488488
try {
489-
val responseObject = response as Map<*, *>
490-
val responseContent = responseObject["content"] as Map<*, *>
491-
val result = responseContent["result"] as Map<*, *>
492-
val config = result["config"] as Map<*, *>
493-
494-
val selectedModels = config["selectedModelByRole"] as? Map<*, *>
495-
var applyCodeBlockModel = selectedModels?.get("apply") as? Map<*, *>
496-
489+
val selectedModels = response.castNestedOrNull<Map<String, Any>>("content", "result", "config", "selectedModelByRole")
490+
497491
// If "apply" role model is not found, try "chat" role
498-
if (applyCodeBlockModel == null) {
499-
applyCodeBlockModel = selectedModels?.get("chat") as? Map<*, *>
500-
}
492+
val applyCodeBlockModel = selectedModels?.get("apply") ?: selectedModels?.get("chat")
501493

502494
if (applyCodeBlockModel != null) {
503495
continuation.resume(applyCodeBlockModel)

extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/editor/InlineEditAction.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.github.continuedev.continueintellijextension.editor
33
import com.github.continuedev.continueintellijextension.`continue`.GetTheme
44
import com.github.continuedev.continueintellijextension.services.ContinueExtensionSettings
55
import com.github.continuedev.continueintellijextension.services.ContinuePluginService
6+
import com.github.continuedev.continueintellijextension.utils.castNestedOrNull
67
import com.github.continuedev.continueintellijextension.utils.getMetaKeyLabel
78
import com.github.continuedev.continueintellijextension.utils.getShiftKeyLabel
89
import com.intellij.openapi.Disposable
@@ -130,11 +131,9 @@ fun openInlineEdit(project: Project?, editor: Editor) {
130131
val modelTitles = mutableListOf<String>()
131132

132133
continuePluginService.coreMessenger?.request("config/getSerializedProfileInfo", null, null) { response ->
133-
val content = (response as Map<String, Any>)["content"] as Map<String, Any>
134-
val result = content["result"] as Map<String, Any>
135-
val config = result["config"] as Map<String, Any>
136-
val models = config["models"] as List<Map<String, Any>>
137-
modelTitles.addAll(models.map { it["title"] as String })
134+
response.castNestedOrNull<List<*>>("content", "result", "config", "modelsByRole", "chat")
135+
?.mapNotNull { it.castNestedOrNull<String>("title") }
136+
?.let(modelTitles::addAll)
138137
}
139138

140139
// This is a hacky way to not complicate getting model titles with coroutines

extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/editor/VerticalDiffBlock.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ class VerticalDiffBlock(
7373

7474
deletedLines.add(deletedText.trimEnd())
7575

76-
// Unable to ensure that text length has not changed, so we need to get it again
77-
editor.document.deleteString(startOffset, min(endOffset, editor.document.textLength))
76+
editor.document.deleteString(startOffset, endOffset)
7877
}
7978

8079

extensions/intellij/src/main/kotlin/com/github/continuedev/continueintellijextension/utils/Utils.kt

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,4 +80,16 @@ fun uuid(): String {
8080
return UUID.randomUUID().toString()
8181
}
8282

83-
fun VirtualFile.toUriOrNull(): String? = fileSystem.getNioPath(this)?.toUri()?.toString()?.removeSuffix("/")
83+
fun VirtualFile.toUriOrNull(): String? = fileSystem.getNioPath(this)?.toUri()?.toString()?.removeSuffix("/")
84+
85+
inline fun <reified T> Any?.castNestedOrNull(vararg keys: String): T? {
86+
return getNestedOrNull(*keys) as? T
87+
}
88+
89+
fun Any?.getNestedOrNull(vararg keys: String): Any? {
90+
var result = this
91+
for (key in keys) {
92+
result = (result as? Map<*, *>)?.get(key) ?: return null
93+
}
94+
return result
95+
}

0 commit comments

Comments
 (0)