Browse Source

Analytics: track interaction `Interaction.Name.MobileRoomComposerFormattingEnabled`

pull/2970/head
Benoit Marty 4 months ago
parent
commit
c4b61627a2
  1. 5
      features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt
  2. 6
      features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt

5
features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerPresenter.kt

@ -36,6 +36,7 @@ import androidx.compose.runtime.setValue @@ -36,6 +36,7 @@ import androidx.compose.runtime.setValue
import androidx.media3.common.MimeTypes
import androidx.media3.common.util.UnstableApi
import im.vector.app.features.analytics.plan.Composer
import im.vector.app.features.analytics.plan.Interaction
import io.element.android.features.messages.impl.attachments.Attachment
import io.element.android.features.messages.impl.attachments.preview.error.sendAttachmentError
import io.element.android.features.messages.impl.mentions.MentionSuggestionsProcessor
@ -68,6 +69,7 @@ import io.element.android.libraries.textcomposer.model.Suggestion @@ -68,6 +69,7 @@ import io.element.android.libraries.textcomposer.model.Suggestion
import io.element.android.libraries.textcomposer.model.TextEditorState
import io.element.android.libraries.textcomposer.model.rememberMarkdownTextEditorState
import io.element.android.services.analytics.api.AnalyticsService
import io.element.android.services.analyticsproviders.api.trackers.captureInteraction
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toPersistentList
import kotlinx.coroutines.CancellationException
@ -388,6 +390,9 @@ class MessageComposerPresenter @Inject constructor( @@ -388,6 +390,9 @@ class MessageComposerPresenter @Inject constructor(
is MessageComposerEvents.ToggleTextFormatting -> {
showAttachmentSourcePicker = false
showTextFormatting = event.enabled
if (showTextFormatting) {
analyticsService.captureInteraction(Interaction.Name.MobileRoomComposerFormattingEnabled)
}
}
is MessageComposerEvents.Error -> {
analyticsService.trackError(event.error)

6
features/messages/impl/src/test/kotlin/io/element/android/features/messages/impl/textcomposer/MessageComposerPresenterTest.kt

@ -26,6 +26,7 @@ import app.cash.turbine.ReceiveTurbine @@ -26,6 +26,7 @@ import app.cash.turbine.ReceiveTurbine
import app.cash.turbine.test
import com.google.common.truth.Truth.assertThat
import im.vector.app.features.analytics.plan.Composer
import im.vector.app.features.analytics.plan.Interaction
import io.element.android.features.messages.impl.messagecomposer.AttachmentsState
import io.element.android.features.messages.impl.messagecomposer.DefaultMessageComposerContext
import io.element.android.features.messages.impl.messagecomposer.MessageComposerEvents
@ -768,10 +769,15 @@ class MessageComposerPresenterTest { @@ -768,10 +769,15 @@ class MessageComposerPresenterTest {
val showTextFormatting = awaitItem()
assertThat(showTextFormatting.showAttachmentSourcePicker).isFalse()
assertThat(showTextFormatting.showTextFormatting).isTrue()
assertThat(analyticsService.capturedEvents).containsExactly(
Interaction(index = null, interactionType = null, name = Interaction.Name.MobileRoomComposerFormattingEnabled)
)
analyticsService.capturedEvents.clear()
showTextFormatting.eventSink(MessageComposerEvents.ToggleTextFormatting(false))
skipItems(1)
val finished = awaitItem()
assertThat(finished.showTextFormatting).isFalse()
assertThat(analyticsService.capturedEvents).isEmpty()
}
}

Loading…
Cancel
Save