Analytics : add analytics on read status and favorite toggles

This commit is contained in:
ganfra 2024-02-19 17:36:23 +01:00
parent a52d441278
commit 4052abf15c
8 changed files with 91 additions and 30 deletions

View file

@ -27,6 +27,7 @@ import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import androidx.lifecycle.Lifecycle
import im.vector.app.features.analytics.plan.Interaction
import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomPresenter
import io.element.android.features.roomdetails.impl.members.details.RoomMemberDetailsPresenter
@ -46,6 +47,8 @@ import io.element.android.libraries.matrix.api.room.powerlevels.canInvite
import io.element.android.libraries.matrix.api.room.powerlevels.canSendState
import io.element.android.libraries.matrix.api.room.roomNotificationSettings
import io.element.android.libraries.matrix.ui.room.getDirectRoomMember
import io.element.android.services.analytics.api.AnalyticsService
import io.element.android.services.analyticsproviders.api.trackers.captureInteraction
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
@ -60,6 +63,7 @@ class RoomDetailsPresenter @Inject constructor(
private val roomMembersDetailsPresenterFactory: RoomMemberDetailsPresenter.Factory,
private val leaveRoomPresenter: LeaveRoomPresenter,
private val dispatchers: CoroutineDispatchers,
private val analyticsService: AnalyticsService,
) : Presenter<RoomDetailsState> {
@Composable
override fun present(): RoomDetailsState {
@ -124,11 +128,7 @@ class RoomDetailsPresenter @Inject constructor(
client.notificationSettingsService().unmuteRoom(room.roomId, room.isEncrypted, room.isOneToOne)
}
}
is RoomDetailsEvent.SetFavorite -> {
scope.launch {
room.setIsFavorite(event.isFavorite)
}
}
is RoomDetailsEvent.SetFavorite -> scope.setFavorite(event.isFavorite)
}
}
@ -187,4 +187,11 @@ class RoomDetailsPresenter @Inject constructor(
room.updateRoomNotificationSettings()
}.launchIn(this)
}
private fun CoroutineScope.setFavorite(isFavorite: Boolean) = launch {
room.setIsFavorite(isFavorite)
.onSuccess {
analyticsService.captureInteraction(Interaction.Name.MobileRoomFavouriteToggle)
}
}
}