TP-66789 | Neil | Location Data Optimisation (#11595)

This commit is contained in:
Neil Mehta
2024-07-03 19:22:32 +05:30
committed by GitHub
parent 38b41bf96f
commit da5dc29c46
2 changed files with 16 additions and 7 deletions

View File

@@ -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

View File

@@ -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()