Skip to content

Commit c9a3bf8

Browse files
committed
feat: send telemetry when hint in editor was clicked (#869)
Signed-off-by: Andre Dietisheim <adietish@redhat.com>
1 parent 73b051c commit c9a3bf8

File tree

5 files changed

+27
-10
lines changed

5 files changed

+27
-10
lines changed

src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/ResourceEditorFactory.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ open class ResourceEditorFactory protected constructor(
137137
private fun createTelemetry(file: VirtualFile): TelemetryMessageBuilder.ActionMessage {
138138
val isLocalFile = ResourceFile.isResourceFile(file)
139139
return getTelemetryMessageBuilder().action(
140-
"${TelemetryService.NAME_PREFIX_EDITOR} open ${
140+
"${TelemetryService.NAME_PREFIX_EDITOR}open ${
141141
if (isLocalFile) {
142142
"cluster file"
143143
} else {

src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/inlay/base64/Base64Presentations.kt

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@ import com.intellij.openapi.project.Project
2020
import com.intellij.psi.PsiElement
2121
import com.redhat.devtools.intellij.common.validation.KubernetesTypeInfo
2222
import com.redhat.devtools.intellij.kubernetes.balloon.StringInputBalloon
23-
import com.redhat.devtools.intellij.kubernetes.editor.inlay.base64.Base64Presentations.InlayPresentationsFactory
2423
import com.redhat.devtools.intellij.kubernetes.editor.inlay.base64.Base64Presentations.create
2524
import com.redhat.devtools.intellij.kubernetes.editor.util.getBinaryData
2625
import com.redhat.devtools.intellij.kubernetes.editor.util.getDataValue
26+
import com.redhat.devtools.intellij.kubernetes.editor.util.getKey
2727
import com.redhat.devtools.intellij.kubernetes.editor.util.isKubernetesResource
2828
import com.redhat.devtools.intellij.kubernetes.model.util.trimWithEllipsis
29+
import com.redhat.devtools.intellij.kubernetes.telemetry.TelemetryService
2930
import org.jetbrains.concurrency.runAsync
3031
import java.awt.event.MouseEvent
3132

@@ -97,12 +98,7 @@ object Base64Presentations {
9798
override fun create(adapter: Base64ValueAdapter): InlayPresentation? {
9899
val decoded = adapter.getDecoded() ?: return null
99100
val offset = adapter.getStartOffset() ?: return null
100-
val onClick = StringInputBalloon(
101-
decoded,
102-
onValidValue(adapter::set, editor.project),
103-
editor
104-
)::show
105-
val presentation = create(decoded, onClick, factory) ?: return null
101+
val presentation = create(decoded, { event -> onClick(adapter.element, decoded, adapter, event) }, factory) ?: return null
106102
sink.addInlineElement(offset, false, presentation, false)
107103
return presentation
108104
}
@@ -120,6 +116,19 @@ object Base64Presentations {
120116
)
121117
}
122118

119+
private fun onClick(element: PsiElement, decoded: String, adapter: Base64ValueAdapter, event: MouseEvent) {
120+
runAsync {
121+
TelemetryService.instance.action("${TelemetryService.NAME_PREFIX_EDITOR_HINT}base64Hint")
122+
.property(TelemetryService.PROP_PROPERTY_NAME, element.getKey()?.text)
123+
.send()
124+
}
125+
StringInputBalloon(
126+
decoded,
127+
onValidValue(adapter::set, editor.project),
128+
editor
129+
).show(event)
130+
}
131+
123132
private fun onValidValue(setter: (value: String, wrapAt: Int) -> Unit, project: Project?)
124133
: (value: String) -> Unit {
125134
return { value ->
@@ -130,7 +139,6 @@ object Base64Presentations {
130139
}
131140
}
132141
}
133-
134142
}
135143

136144
class BinaryPresentationsFactory(element: PsiElement, sink: InlayHintsSink, editor: Editor, factory: PresentationFactory)

src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/inlay/base64/Base64ValueAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import com.redhat.devtools.intellij.kubernetes.editor.util.getValue
1919
import com.redhat.devtools.intellij.kubernetes.editor.util.setValue
2020
import org.jetbrains.yaml.psi.YAMLKeyValue
2121

22-
class Base64ValueAdapter(private val element: PsiElement) {
22+
class Base64ValueAdapter(val element: PsiElement) {
2323

2424
private companion object {
2525
private val CONTENT_REGEX = Regex("[^\"\n |]*", RegexOption.MULTILINE)

src/main/kotlin/com/redhat/devtools/intellij/kubernetes/editor/inlay/selector/SelectorPresentations.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@ import com.redhat.devtools.intellij.kubernetes.editor.util.getLabels
2323
import com.redhat.devtools.intellij.kubernetes.editor.util.getSelector
2424
import com.redhat.devtools.intellij.kubernetes.editor.util.getTemplate
2525
import com.redhat.devtools.intellij.kubernetes.editor.util.hasTemplate
26+
import com.redhat.devtools.intellij.kubernetes.telemetry.TelemetryService
2627
import com.redhat.devtools.intellij.kubernetes.usage.LabelsFilter
2728
import com.redhat.devtools.intellij.kubernetes.usage.SelectorsFilter
29+
import org.jetbrains.concurrency.runAsync
2830
import java.awt.Point
2931
import java.awt.event.MouseEvent
3032
import javax.swing.Icon
@@ -156,6 +158,11 @@ object SelectorPresentations {
156158
return { event, point ->
157159
val project = editor.project
158160
if (project != null) {
161+
runAsync {
162+
TelemetryService.instance.action("${TelemetryService.NAME_PREFIX_EDITOR_HINT}selector")
163+
.property(TelemetryService.PROP_PROPERTY_NAME, hintedKeyValue.getKey()?.text)
164+
.send()
165+
}
159166
ShowUsagesAction.startFindUsages(hintedKeyValue, RelativePoint(event), editor)
160167
}
161168
}

src/main/kotlin/com/redhat/devtools/intellij/kubernetes/telemetry/TelemetryService.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@ import io.fabric8.kubernetes.api.model.HasMetadata
2323
object TelemetryService {
2424

2525
const val NAME_PREFIX_EDITOR = "editor-"
26+
const val NAME_PREFIX_EDITOR_HINT = "${NAME_PREFIX_EDITOR}hint_clicked-"
2627
const val NAME_PREFIX_NAMESPACE = "current_namespace-"
2728
const val NAME_PREFIX_CONTEXT = "current_context-"
2829

2930
const val PROP_RESOURCE_KIND = "resource_kind"
3031
const val PROP_IS_OPENSHIFT = "is_openshift"
3132
const val PROP_KUBERNETES_VERSION = "kubernetes_version"
3233
const val PROP_OPENSHIFT_VERSION = "openshift_version"
34+
const val PROP_PROPERTY_NAME = "property_name"
3335

3436
val instance: TelemetryMessageBuilder by lazy {
3537
return@lazy if (!ApplicationManager.getApplication().isUnitTestMode) {

0 commit comments

Comments
 (0)