Skip to content

refactor: simplify nested map access and improve readability #5247

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.continuedev.continueintellijextension.`continue`

import com.github.continuedev.continueintellijextension.services.TelemetryService
import com.github.continuedev.continueintellijextension.utils.castNestedOrNull
import com.github.continuedev.continueintellijextension.utils.getMachineUniqueID
import com.intellij.ide.plugins.PluginManager
import com.intellij.openapi.components.service
Expand Down Expand Up @@ -59,12 +60,8 @@ class CoreMessengerManager(
coreMessenger = CoreMessenger(project, continueCorePath, ideProtocolClient, coroutineScope)

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

val allowAnonymousTelemetry = config?.get("allowAnonymousTelemetry") as? Boolean
val telemetryService = service<TelemetryService>()
if (allowAnonymousTelemetry == true || allowAnonymousTelemetry == null) {
telemetryService.setup(getMachineUniqueID())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -486,18 +486,10 @@ class IdeProtocolClient(
null
) { response ->
try {
val responseObject = response as Map<*, *>
val responseContent = responseObject["content"] as Map<*, *>
val result = responseContent["result"] as Map<*, *>
val config = result["config"] as Map<*, *>

val selectedModels = config["selectedModelByRole"] as? Map<*, *>
var applyCodeBlockModel = selectedModels?.get("apply") as? Map<*, *>

val selectedModels = response.castNestedOrNull<Map<String, Any>>("content", "result", "config", "selectedModelByRole")

// If "apply" role model is not found, try "chat" role
if (applyCodeBlockModel == null) {
applyCodeBlockModel = selectedModels?.get("chat") as? Map<*, *>
}
val applyCodeBlockModel = selectedModels?.get("apply") ?: selectedModels?.get("chat")

if (applyCodeBlockModel != null) {
continuation.resume(applyCodeBlockModel)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.github.continuedev.continueintellijextension.editor
import com.github.continuedev.continueintellijextension.`continue`.GetTheme
import com.github.continuedev.continueintellijextension.services.ContinueExtensionSettings
import com.github.continuedev.continueintellijextension.services.ContinuePluginService
import com.github.continuedev.continueintellijextension.utils.castNestedOrNull
import com.github.continuedev.continueintellijextension.utils.getMetaKeyLabel
import com.github.continuedev.continueintellijextension.utils.getShiftKeyLabel
import com.intellij.openapi.Disposable
Expand Down Expand Up @@ -130,11 +131,9 @@ fun openInlineEdit(project: Project?, editor: Editor) {
val modelTitles = mutableListOf<String>()

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

// This is a hacky way to not complicate getting model titles with coroutines
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ class VerticalDiffBlock(

deletedLines.add(deletedText.trimEnd())

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


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,4 +80,16 @@ fun uuid(): String {
return UUID.randomUUID().toString()
}

fun VirtualFile.toUriOrNull(): String? = fileSystem.getNioPath(this)?.toUri()?.toString()?.removeSuffix("/")
fun VirtualFile.toUriOrNull(): String? = fileSystem.getNioPath(this)?.toUri()?.toString()?.removeSuffix("/")

inline fun <reified T> Any?.castNestedOrNull(vararg keys: String): T? {
return getNestedOrNull(*keys) as? T
}

fun Any?.getNestedOrNull(vararg keys: String): Any? {
var result = this
for (key in keys) {
result = (result as? Map<*, *>)?.get(key) ?: return null
}
return result
}
Loading