From da5dc29c4602b9c432d491e6941f7c7ec5a9be43 Mon Sep 17 00:00:00 2001 From: Neil Mehta Date: Wed, 3 Jul 2024 19:22:32 +0530 Subject: [PATCH] TP-66789 | Neil | Location Data Optimisation (#11595) --- .../common/handler/PostLocationActionHandler.kt | 8 +++++++- .../navi/common/managers/NaviLocationManager.kt | 15 +++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/handler/PostLocationActionHandler.kt b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/handler/PostLocationActionHandler.kt index 3747b01ae9..f60cca5f79 100644 --- a/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/handler/PostLocationActionHandler.kt +++ b/android/application-platform/navi-ap/src/main/kotlin/com/navi/ap/common/handler/PostLocationActionHandler.kt @@ -11,6 +11,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalContext import androidx.lifecycle.asFlow import com.navi.ap.common.ui.ApplicationPlatformActivity import com.navi.ap.common.viewmodel.ApplicationPlatformVM @@ -24,6 +25,11 @@ fun HandlePostLocationAction( activity: ApplicationPlatformActivity ) { val action = remember { mutableStateOf(PostLocationAction()) } + val context = LocalContext.current + val naviLocationManager = remember { + NaviLocationManager(applicationContext = context, forceUpdateLocation = true) + } + LaunchedEffect(Unit) { viewModel.getActionCallback().collect { when (it) { @@ -31,7 +37,7 @@ fun HandlePostLocationAction( action.value = it handlePostLocationAction( activity = activity, - naviLocationManager = activity.getNaviLocationManager() + naviLocationManager = naviLocationManager ) } else -> Unit diff --git a/android/navi-common/src/main/java/com/navi/common/managers/NaviLocationManager.kt b/android/navi-common/src/main/java/com/navi/common/managers/NaviLocationManager.kt index fd9525917f..76dcf95117 100644 --- a/android/navi-common/src/main/java/com/navi/common/managers/NaviLocationManager.kt +++ b/android/navi-common/src/main/java/com/navi/common/managers/NaviLocationManager.kt @@ -61,8 +61,10 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import timber.log.Timber -class NaviLocationManager(val applicationContext: Context? = CommonLibManager.application) : - Application.ActivityLifecycleCallbacks { +class NaviLocationManager( + val applicationContext: Context? = CommonLibManager.application, + val forceUpdateLocation: Boolean = false +) : Application.ActivityLifecycleCallbacks { private val fusedLocationClient = applicationContext?.let { LocationServices.getFusedLocationProviderClient(it) } private var isLocationNeedToPost: Boolean = false @@ -169,10 +171,11 @@ class NaviLocationManager(val applicationContext: Context? = CommonLibManager.ap screenName = null PreferenceManager.setBooleanPreference(IS_HARD_LOCATION_UPDATE, false) if ( - shouldPostLocationData( - previousLocation, - location, - ) + forceUpdateLocation || + shouldPostLocationData( + previousLocation, + location, + ) ) { val response = LocationRepository().postLocation(location) analyticsTracker.onLocationPostEndTime()