diff --git a/vector/src/main/java/im/vector/app/features/analytics/VectorAnalytics.kt b/vector/src/main/java/im/vector/app/features/analytics/VectorAnalytics.kt index b5752942e4..4503f4152d 100644 --- a/vector/src/main/java/im/vector/app/features/analytics/VectorAnalytics.kt +++ b/vector/src/main/java/im/vector/app/features/analytics/VectorAnalytics.kt @@ -63,4 +63,9 @@ interface VectorAnalytics { * Capture an Event */ fun capture(event: String, properties: Map? = null) + + /** + * Track a displayed screen + */ + fun screen(name: String, properties: Map? = null) } diff --git a/vector/src/main/java/im/vector/app/features/analytics/impl/DefaultVectorAnalytics.kt b/vector/src/main/java/im/vector/app/features/analytics/impl/DefaultVectorAnalytics.kt index 09eeb47070..913f257a32 100644 --- a/vector/src/main/java/im/vector/app/features/analytics/impl/DefaultVectorAnalytics.kt +++ b/vector/src/main/java/im/vector/app/features/analytics/impl/DefaultVectorAnalytics.kt @@ -93,11 +93,22 @@ class DefaultVectorAnalytics @Inject constructor( override fun capture(event: String, properties: Map?) { posthog?.capture( event, - properties?.let { props -> - Properties().apply { - props.forEach { putValue(it.key, it.value) } - } - } + properties.toPostHogProperties() ) } + + override fun screen(name: String, properties: Map?) { + posthog?.screen( + name, + properties.toPostHogProperties() + ) + } + + private fun Map?.toPostHogProperties(): Properties? { + if (this == null) return null + + return Properties().apply { + this@toPostHogProperties.forEach { putValue(it.key, it.value) } + } + } }