From 5cdd3fdc464d3d66ec1b440a66435923ec772f04 Mon Sep 17 00:00:00 2001 From: Arty Bishop Date: Mon, 31 Aug 2020 20:21:51 +0100 Subject: [PATCH] Minor fixes to location and DB --- .../dagger/modules/PersistenceModule.kt | 2 +- .../rtbishop/look4sat/ui/SharedViewModel.kt | 21 ++++--------- .../rtbishop/look4sat/utility/PrefsManager.kt | 30 ++++++++++++------- 3 files changed, 27 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/rtbishop/look4sat/dagger/modules/PersistenceModule.kt b/app/src/main/java/com/rtbishop/look4sat/dagger/modules/PersistenceModule.kt index 46ab5320..a92943a8 100644 --- a/app/src/main/java/com/rtbishop/look4sat/dagger/modules/PersistenceModule.kt +++ b/app/src/main/java/com/rtbishop/look4sat/dagger/modules/PersistenceModule.kt @@ -65,7 +65,7 @@ class PersistenceModule { @Singleton @Provides fun provideSatelliteDb(context: Context): SatelliteDb { - return Room.databaseBuilder(context, SatelliteDb::class.java, "satellites") + return Room.databaseBuilder(context, SatelliteDb::class.java, "satDb") .build() } } diff --git a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt index 4995ff69..9ef1a9bc 100644 --- a/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt +++ b/app/src/main/java/com/rtbishop/look4sat/ui/SharedViewModel.kt @@ -19,7 +19,6 @@ package com.rtbishop.look4sat.ui -import android.location.LocationManager import android.net.Uri import androidx.lifecycle.* import com.github.amsacode.predict4java.GroundStationPosition @@ -70,20 +69,12 @@ class SharedViewModel @Inject constructor( } fun updatePosition() { - val provider = LocationManager.PASSIVE_PROVIDER - try { - val location = prefsManager.locationManager.getLastKnownLocation(provider) - location.let { - if (it == null) { - _gsp.postValue(Result.Error(IllegalArgumentException())) - } else { - val gsp = GroundStationPosition(it.latitude, it.longitude, it.altitude) - prefsManager.setPosition(gsp) - _gsp.postValue(Result.Success(gsp)) - } - } - } catch (e: SecurityException) { - _gsp.postValue(Result.Error(e)) + val lastLoc = prefsManager.getLastKnownLocation() + if (lastLoc == null) { + _gsp.postValue(Result.Error(Exception())) + } else { + val gsp = GroundStationPosition(lastLoc.latitude, lastLoc.longitude, lastLoc.altitude) + _gsp.postValue(Result.Success(gsp)) } } diff --git a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt index 311309bb..d825739c 100644 --- a/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt +++ b/app/src/main/java/com/rtbishop/look4sat/utility/PrefsManager.kt @@ -20,6 +20,7 @@ package com.rtbishop.look4sat.utility import android.content.SharedPreferences +import android.location.Location import android.location.LocationManager import androidx.core.content.edit import com.github.amsacode.predict4java.GroundStationPosition @@ -27,7 +28,7 @@ import javax.inject.Inject class PrefsManager @Inject constructor( private val preferences: SharedPreferences, - val locationManager: LocationManager + private val locationManager: LocationManager ) { private val keyHoursAhead = "hoursAhead" private val keyMinElevation = "minEl" @@ -66,6 +67,24 @@ class PrefsManager @Inject constructor( return GroundStationPosition(lat, lon, alt) } + fun getLastKnownLocation(): Location? { + val provPassive = LocationManager.PASSIVE_PROVIDER + return try { + val location = locationManager.getLastKnownLocation(provPassive) + location?.let { + preferences.edit { + putString(keyLatitude, location.latitude.toString()) + putString(keyLongitude, location.longitude.toString()) + putString(keyAltitude, location.altitude.toString()) + apply() + } + } + location + } catch (e: SecurityException) { + null + } + } + fun setHoursAhead(hours: Int) { preferences.edit { putInt(keyHoursAhead, hours) @@ -80,15 +99,6 @@ class PrefsManager @Inject constructor( } } - fun setPosition(gsp: GroundStationPosition) { - preferences.edit { - putString(keyLatitude, gsp.latitude.toString()) - putString(keyLongitude, gsp.longitude.toString()) - putString(keyAltitude, gsp.heightAMSL.toString()) - apply() - } - } - fun getTleSources(): Set { return preferences.getStringSet(keyTleSources, null) ?: setOf(defaultTleUrl) }