11package com.ninecraft.booket.feature.detail.record
22
33import androidx.compose.runtime.Composable
4- import androidx.compose.runtime.LaunchedEffect
54import androidx.compose.runtime.getValue
65import androidx.compose.runtime.mutableStateOf
76import androidx.compose.runtime.rememberCoroutineScope
87import androidx.compose.runtime.setValue
8+ import com.ninecraft.booket.core.common.analytics.AnalyticsHelper
99import com.ninecraft.booket.core.common.utils.handleException
1010import com.ninecraft.booket.core.data.api.repository.RecordRepository
1111import com.ninecraft.booket.core.model.RecordDetailModel
@@ -16,10 +16,12 @@ import com.ninecraft.booket.feature.screens.RecordEditScreen
1616import com.ninecraft.booket.feature.screens.arguments.RecordEditArgs
1717import com.ninecraft.booket.feature.screens.extensions.delayedGoTo
1818import com.orhanobut.logger.Logger
19+ import com.skydoves.compose.effects.RememberedEffect
1920import com.slack.circuit.codegen.annotations.CircuitInject
2021import com.slack.circuit.retained.rememberRetained
2122import com.slack.circuit.runtime.Navigator
2223import com.slack.circuit.runtime.presenter.Presenter
24+ import com.slack.circuitx.effects.ImpressionEffect
2325import dagger.assisted.Assisted
2426import dagger.assisted.AssistedFactory
2527import dagger.assisted.AssistedInject
@@ -30,8 +32,14 @@ class RecordDetailPresenter @AssistedInject constructor(
3032 @Assisted private val screen : RecordDetailScreen ,
3133 @Assisted private val navigator : Navigator ,
3234 private val repository : RecordRepository ,
35+ private val analyticsHelper : AnalyticsHelper ,
3336) : Presenter<RecordDetailUiState> {
3437
38+ companion object {
39+ private const val RECORD_DELETE = " record_delete"
40+ private const val RECORD_DELETE_COMPLETE = " record_delete_complete"
41+ }
42+
3543 @Composable
3644 override fun present (): RecordDetailUiState {
3745 val scope = rememberCoroutineScope()
@@ -72,6 +80,7 @@ class RecordDetailPresenter @AssistedInject constructor(
7280 scope.launch {
7381 repository.deleteRecord(readingRecordId = readingRecordId)
7482 .onSuccess {
83+ analyticsHelper.logEvent(RECORD_DELETE_COMPLETE )
7584 onSuccess()
7685 }
7786 .onFailure { exception ->
@@ -146,6 +155,7 @@ class RecordDetailPresenter @AssistedInject constructor(
146155 }
147156
148157 is RecordDetailUiEvent .OnDeleteRecordClick -> {
158+ analyticsHelper.logEvent(RECORD_DELETE )
149159 isRecordMenuBottomSheetVisible = false
150160 isRecordDeleteDialogVisible = true
151161 }
@@ -162,10 +172,14 @@ class RecordDetailPresenter @AssistedInject constructor(
162172 }
163173 }
164174
165- LaunchedEffect (Unit ) {
175+ RememberedEffect (Unit ) {
166176 getRecordDetail(screen.recordId)
167177 }
168178
179+ ImpressionEffect {
180+ analyticsHelper.logScreenView(screen.name)
181+ }
182+
169183 return RecordDetailUiState (
170184 uiState = uiState,
171185 recordDetailInfo = recordDetailInfo,
0 commit comments