diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt index 2ac5b8691a..c313e8a992 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomNode.kt @@ -27,12 +27,14 @@ import dagger.assisted.AssistedInject import io.element.android.anvilannotations.ContributesNode import io.element.android.features.createroom.impl.di.CreateRoomScope import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.services.analytics.api.AnalyticsService @ContributesNode(CreateRoomScope::class) class ConfigureRoomNode @AssistedInject constructor( @Assisted buildContext: BuildContext, @Assisted plugins: List, private val presenter: ConfigureRoomPresenter, + private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { @@ -50,7 +52,8 @@ class ConfigureRoomNode @AssistedInject constructor( state = state, modifier = modifier, onBackPressed = this::navigateUp, - onRoomCreated = this::onRoomCreated + onRoomCreated = this::onRoomCreated, + analyticsService = analyticsService, ) } } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt index 703fa268e2..48c8efc010 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/configureroom/ConfigureRoomView.kt @@ -48,6 +48,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.features.createroom.impl.R import io.element.android.features.createroom.impl.components.RoomPrivacyOption import io.element.android.libraries.architecture.Async @@ -65,6 +66,7 @@ import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.ui.components.AvatarActionBottomSheet import io.element.android.libraries.matrix.ui.components.SelectedUsersList import io.element.android.libraries.matrix.ui.components.UnsavedAvatar +import io.element.android.services.analytics.api.AnalyticsService import kotlinx.coroutines.launch import io.element.android.libraries.ui.strings.R as StringR @@ -75,7 +77,14 @@ fun ConfigureRoomView( modifier: Modifier = Modifier, onBackPressed: () -> Unit = {}, onRoomCreated: (RoomId) -> Unit = {}, + analyticsService: AnalyticsService? = null, ) { + analyticsService?.let { + LaunchedEffect(Unit) { + it.screen(MobileScreen(screenName = MobileScreen.ScreenName.CreateRoom)) + } + } + val coroutineScope = rememberCoroutineScope() val focusManager = LocalFocusManager.current val itemActionsBottomSheetState = rememberModalBottomSheetState( diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt index 6b5ac667c5..df6e6cc8a7 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootNode.kt @@ -34,6 +34,7 @@ import io.element.android.libraries.matrix.api.MatrixClient import io.element.android.libraries.matrix.api.core.RoomId import io.element.android.libraries.matrix.api.permalink.PermalinkBuilder import io.element.android.libraries.ui.strings.R +import io.element.android.services.analytics.api.AnalyticsService import timber.log.Timber @ContributesNode(SessionScope::class) @@ -43,6 +44,7 @@ class CreateRoomRootNode @AssistedInject constructor( private val presenter: CreateRoomRootPresenter, private val matrixClient: MatrixClient, private val buildMeta: BuildMeta, + private val analyticsService: AnalyticsService, ) : Node(buildContext, plugins = plugins) { interface Callback : Plugin { @@ -70,7 +72,8 @@ class CreateRoomRootNode @AssistedInject constructor( onClosePressed = this::navigateUp, onNewRoomClicked = callback::onCreateNewRoom, onOpenDM = callback::onStartChatSuccess, - onInviteFriendsClicked = { invitePeople(context) } + onInviteFriendsClicked = { invitePeople(context) }, + analyticsService = analyticsService, ) } diff --git a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt index 05dd8d04fb..a4b5b48511 100644 --- a/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt +++ b/features/createroom/impl/src/main/kotlin/io/element/android/features/createroom/impl/root/CreateRoomRootView.kt @@ -41,6 +41,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import im.vector.app.features.analytics.plan.MobileScreen import io.element.android.features.createroom.impl.R import io.element.android.features.createroom.impl.components.UserListView import io.element.android.libraries.architecture.Async @@ -54,6 +55,7 @@ import io.element.android.libraries.designsystem.theme.components.IconButton import io.element.android.libraries.designsystem.theme.components.Scaffold import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.matrix.api.core.RoomId +import io.element.android.services.analytics.api.AnalyticsService import io.element.android.libraries.designsystem.R as DrawableR import io.element.android.libraries.ui.strings.R as StringR @@ -66,7 +68,14 @@ fun CreateRoomRootView( onNewRoomClicked: () -> Unit = {}, onOpenDM: (RoomId) -> Unit = {}, onInviteFriendsClicked: () -> Unit = {}, + analyticsService: AnalyticsService? = null, ) { + analyticsService?.let { + LaunchedEffect(Unit) { + it.screen(MobileScreen(screenName = MobileScreen.ScreenName.StartChat)) + } + } + if (state.startDmAction is Async.Success) { LaunchedEffect(state.startDmAction) { onOpenDM(state.startDmAction.state)