TP-66789 | Neil | Location Data Optimisation (#11595)
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user