Skip to content

Commit ce97896

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

File tree

5 files changed

+28
-9
lines changed

5 files changed

+28
-9
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: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,13 @@ import com.redhat.devtools.intellij.kubernetes.editor.inlay.base64.Base64Present
2424
import com.redhat.devtools.intellij.kubernetes.editor.inlay.base64.Base64Presentations.create
2525
import com.redhat.devtools.intellij.kubernetes.editor.util.getBinaryData
2626
import com.redhat.devtools.intellij.kubernetes.editor.util.getDataValue
27+
import com.redhat.devtools.intellij.kubernetes.editor.util.getKey
2728
import com.redhat.devtools.intellij.kubernetes.editor.util.isKubernetesResource
2829
import com.redhat.devtools.intellij.kubernetes.model.util.trimWithEllipsis
30+
import com.redhat.devtools.intellij.kubernetes.telemetry.TelemetryService
2931
import org.jetbrains.concurrency.runAsync
3032
import java.awt.event.MouseEvent
33+
import kotlin.reflect.KFunction1
3134

3235
/**
3336
* A factory that creates an [InlayPresentationsFactory] that creates an [InlayPresentationsFactory] for the given kubernetes resource.
@@ -97,12 +100,7 @@ object Base64Presentations {
97100
override fun create(adapter: Base64ValueAdapter): InlayPresentation? {
98101
val decoded = adapter.getDecoded() ?: return null
99102
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
103+
val presentation = create(decoded, { event -> onClick(adapter.element, decoded, adapter, event) }, factory) ?: return null
106104
sink.addInlineElement(offset, false, presentation, false)
107105
return presentation
108106
}
@@ -120,6 +118,19 @@ object Base64Presentations {
120118
)
121119
}
122120

121+
private fun onClick(element: PsiElement, decoded: String, adapter: Base64ValueAdapter, event: MouseEvent) {
122+
runAsync {
123+
TelemetryService.instance.action("${TelemetryService.NAME_PREFIX_EDITOR_HINT}base64Hint")
124+
.property(TelemetryService.PROP_PROPERTY_NAME, element.getKey()?.text)
125+
.send()
126+
}
127+
StringInputBalloon(
128+
decoded,
129+
onValidValue(adapter::set, editor.project),
130+
editor
131+
).show(event)
132+
}
133+
123134
private fun onValidValue(setter: (value: String, wrapAt: Int) -> Unit, project: Project?)
124135
: (value: String) -> Unit {
125136
return { value ->
@@ -130,7 +141,6 @@ object Base64Presentations {
130141
}
131142
}
132143
}
133-
134144
}
135145

136146
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)