@@ -4,6 +4,9 @@ import android.os.Build
44import com.onesignal.common.AndroidUtils
55import com.onesignal.common.threading.suspendifyOnThread
66import com.onesignal.core.internal.application.IApplicationService
7+ import com.onesignal.core.internal.preferences.IPreferencesService
8+ import com.onesignal.core.internal.preferences.PreferenceOneSignalKeys
9+ import com.onesignal.core.internal.preferences.PreferenceStores
710import com.onesignal.core.internal.startup.IStartableService
811import com.onesignal.debug.LogLevel
912import com.onesignal.debug.internal.logging.Logging
@@ -22,13 +25,17 @@ internal class LocationManager(
2225 private val _capturer : ILocationCapturer ,
2326 private val _locationController : ILocationController ,
2427 private val _locationPermissionController : LocationPermissionController ,
28+ private val _prefs : IPreferencesService ,
2529) : ILocationManager, IStartableService, ILocationPermissionChangedHandler {
26- private var _isShared : Boolean = false
30+ private var _isShared : Boolean = _prefs .getBool( PreferenceStores . ONESIGNAL , PreferenceOneSignalKeys . PREFS_OS_LOCATION_SHARED , false ) !!
2731 override var isShared
2832 get() = _isShared
2933 set(value) {
3034 Logging .debug(" LocationManager.setIsShared(value: $value )" )
35+ _prefs .saveBool(PreferenceStores .ONESIGNAL , PreferenceOneSignalKeys .PREFS_OS_LOCATION_SHARED , value)
3136 _isShared = value
37+
38+ onLocationPermissionChanged(value)
3239 }
3340
3441 override fun start () {
@@ -71,7 +78,7 @@ internal class LocationManager(
7178 var result = false
7279 withContext(Dispatchers .Main ) {
7380 if (! isShared) {
74- return @withContext false
81+ Logging .warn( " Requesting location permission, but location sharing must also be enabled by setting isShared to true " )
7582 }
7683
7784 val hasFinePermissionGranted =
@@ -179,13 +186,20 @@ internal class LocationManager(
179186
180187 // Started from this class or PermissionActivity
181188 private suspend fun startGetLocation () {
189+ if (! isShared) {
190+ return
191+ }
192+
182193 Logging .debug(" LocationManager.startGetLocation()" ) // with lastLocation: " + lastLocation)
183194 try {
184195 if (! _locationController .start()) {
185196 Logging .warn(" LocationManager.startGetLocation: not possible, no location dependency found" )
186197 }
187198 } catch (t: Throwable ) {
188- Logging .warn(" LocationManager.startGetLocation: Location permission exists but there was an error initializing: " , t)
199+ Logging .warn(
200+ " LocationManager.startGetLocation: Location permission exists but there was an error initializing: " ,
201+ t,
202+ )
189203 }
190204 }
191205}
0 commit comments