From 21745a2487c86c20fbd548c7f95a56a9d5160748 Mon Sep 17 00:00:00 2001 From: Sohan Reddy Atukula Date: Fri, 5 Apr 2024 15:13:37 +0530 Subject: [PATCH] TP-60183 | Sohan Reddy | On Start call and back disable (#10304) --- .../navi/coin/ui/compose/CoinHomeScreen.kt | 13 ++++++--- .../coin/ui/compose/RedemptionStatusScreen.kt | 3 ++ .../java/com/navi/rr/utils/RRComposeUtils.kt | 28 +++++++++++++++++++ .../main/java/com/navi/rr/utils/RRUtils.kt | 6 ---- 4 files changed, 40 insertions(+), 10 deletions(-) create mode 100644 android/navi-rr/src/main/java/com/navi/rr/utils/RRComposeUtils.kt diff --git a/android/navi-coin/src/main/java/com/navi/coin/ui/compose/CoinHomeScreen.kt b/android/navi-coin/src/main/java/com/navi/coin/ui/compose/CoinHomeScreen.kt index 05958b8452..712ebc5fbf 100644 --- a/android/navi-coin/src/main/java/com/navi/coin/ui/compose/CoinHomeScreen.kt +++ b/android/navi-coin/src/main/java/com/navi/coin/ui/compose/CoinHomeScreen.kt @@ -79,6 +79,7 @@ import com.navi.common.uitron.model.action.CtaAction import com.navi.rr.common.actions.InitActionHandler import com.navi.rr.common.activity.RRBaseActivity import com.navi.rr.utils.Constants.NULL_STRING +import com.navi.rr.utils.DisposableEffectWithLifeCycle import com.navi.rr.utils.InitWidgetActions import com.navi.rr.utils.brushType import com.navi.rr.utils.getGsonBuilders @@ -98,7 +99,8 @@ import kotlinx.coroutines.launch import java.util.UUID import com.navi.common.R as CommonR -@OptIn(ExperimentalFoundationApi::class, +@OptIn( + ExperimentalFoundationApi::class, ExperimentalMaterialApi::class, ExperimentalComposeUiApi::class ) @Destination @@ -185,10 +187,13 @@ fun CoinHomeScreen( } } - LaunchedEffect(Unit) { - naviCoinsAnalytics.sendEvent(NaviCoinsAnalytics.REWARDS_NAVI_COINS_INFO_PAGE_LANDS) - coinHomeScreenVM.fetchCoinHomeScreenUiTronConfigs() + DisposableEffectWithLifeCycle( + onStart = { + coinHomeScreenVM.fetchCoinHomeScreenUiTronConfigs() + } + ) { coinHomeScreenVM.fetchAndSaveCoinHistoryScreen() + naviCoinsAnalytics.sendEvent(NaviCoinsAnalytics.REWARDS_NAVI_COINS_INFO_PAGE_LANDS) } LaunchedEffect(Unit) { diff --git a/android/navi-coin/src/main/java/com/navi/coin/ui/compose/RedemptionStatusScreen.kt b/android/navi-coin/src/main/java/com/navi/coin/ui/compose/RedemptionStatusScreen.kt index 7ab9051f76..9d3e506da9 100644 --- a/android/navi-coin/src/main/java/com/navi/coin/ui/compose/RedemptionStatusScreen.kt +++ b/android/navi-coin/src/main/java/com/navi/coin/ui/compose/RedemptionStatusScreen.kt @@ -2,6 +2,7 @@ package com.navi.coin.ui.compose import android.app.Activity import android.os.Bundle +import androidx.activity.compose.BackHandler import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxSize @@ -43,6 +44,8 @@ fun RedemptionStatusScreen( viewModel = redemptionStatusVM ) + BackHandler {} + LaunchedEffect(Unit) { redemptionStatusVM.screenActions.collect { action -> when (action) { diff --git a/android/navi-rr/src/main/java/com/navi/rr/utils/RRComposeUtils.kt b/android/navi-rr/src/main/java/com/navi/rr/utils/RRComposeUtils.kt new file mode 100644 index 0000000000..ce6d34ab01 --- /dev/null +++ b/android/navi-rr/src/main/java/com/navi/rr/utils/RRComposeUtils.kt @@ -0,0 +1,28 @@ +package com.navi.rr.utils + +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.ui.platform.LocalLifecycleOwner +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleEventObserver + +@Composable +fun DisposableEffectWithLifeCycle( + onStart: (() -> Unit)? = null, + onStop: (() -> Unit)? = null, + effect: (() -> Unit)? = null +) { + val lifecycle = LocalLifecycleOwner.current.lifecycle + DisposableEffect(lifecycle) { + effect?.invoke() + val observer = LifecycleEventObserver { _, event -> + when (event) { + Lifecycle.Event.ON_START -> onStart?.invoke() + Lifecycle.Event.ON_STOP -> onStop?.invoke() + else -> Lifecycle.Event.ON_ANY + } + } + lifecycle.addObserver(observer) + onDispose { lifecycle.removeObserver(observer) } + } +} \ No newline at end of file diff --git a/android/navi-rr/src/main/java/com/navi/rr/utils/RRUtils.kt b/android/navi-rr/src/main/java/com/navi/rr/utils/RRUtils.kt index bc4f5a64eb..b0d29146fc 100644 --- a/android/navi-rr/src/main/java/com/navi/rr/utils/RRUtils.kt +++ b/android/navi-rr/src/main/java/com/navi/rr/utils/RRUtils.kt @@ -16,10 +16,8 @@ import android.content.Intent import android.net.Uri import android.provider.Settings import android.view.View -import androidx.compose.foundation.background import androidx.compose.foundation.interaction.Interaction import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.SpanStyle @@ -71,18 +69,14 @@ import com.navi.uitron.model.animations.PropertyAnimator import com.navi.uitron.model.data.UiTronAction import com.navi.uitron.model.data.UiTronData import com.navi.uitron.model.ui.BaseProperty -import com.navi.uitron.model.ui.BrushData -import com.navi.uitron.model.ui.BrushType import com.navi.uitron.model.visualtransformation.VisualTransformationData import com.navi.uitron.serializer.ComposePropertySerializer import com.navi.uitron.serializer.UiTronValidationSerializer import com.navi.uitron.serializer.VisualTransformationDataSerializer import com.navi.uitron.serializer.animationsSerializers.AnimationSpecSerializer import com.navi.uitron.serializer.animationsSerializers.PropertyAnimatorSerializer -import com.navi.uitron.utils.getTileMode import com.navi.uitron.utils.hexToComposeColor import com.navi.uitron.utils.orFalse -import com.navi.uitron.utils.parseColorSafe import com.navi.uitron.utils.transformations.moneyFormat import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow