kopia lustrzana https://github.com/rt-bishop/Look4Sat
Minor fixes and code cleanup
rodzic
f559c60154
commit
148104880e
|
@ -23,6 +23,7 @@ import android.content.pm.PackageManager
|
|||
import android.location.Location
|
||||
import android.location.LocationListener
|
||||
import android.location.LocationManager
|
||||
import android.os.Bundle
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.domain.LocationHandler
|
||||
|
@ -105,4 +106,10 @@ class LocationProvider @Inject constructor(
|
|||
manager.removeUpdates(this)
|
||||
setStationPosition(location.latitude, location.longitude)
|
||||
}
|
||||
|
||||
override fun onProviderEnabled(provider: String) {}
|
||||
|
||||
override fun onProviderDisabled(provider: String) {}
|
||||
|
||||
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ object CoreModule {
|
|||
@DefaultDispatcher defaultDispatcher: CoroutineDispatcher
|
||||
): DataRepository {
|
||||
val dataParser = DataParser(defaultDispatcher)
|
||||
val db = Room.databaseBuilder(context, SatelliteDb::class.java, "SatelliteDb")
|
||||
val db = Room.databaseBuilder(context, SatelliteDb::class.java, "Look4SatDB")
|
||||
.fallbackToDestructiveMigration().build()
|
||||
val localSource = LocalSource(db.entriesDao(), db.transmittersDao())
|
||||
val remoteSource = RemoteSource(ioDispatcher)
|
||||
|
|
|
@ -32,7 +32,6 @@ import com.rtbishop.look4sat.databinding.FragmentEntriesBinding
|
|||
import com.rtbishop.look4sat.domain.model.DataState
|
||||
import com.rtbishop.look4sat.domain.model.SatItem
|
||||
import com.rtbishop.look4sat.presentation.ItemDivider
|
||||
import com.rtbishop.look4sat.presentation.getNavResult
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
|
||||
@AndroidEntryPoint
|
||||
|
@ -63,9 +62,6 @@ class EntriesFragment : Fragment(R.layout.fragment_entries) {
|
|||
viewModel.satData.observe(viewLifecycleOwner, { satData ->
|
||||
handleSatData(satData, binding, entriesAdapter)
|
||||
})
|
||||
getNavResult<List<String>>(R.id.nav_satellites, "sources") { sources ->
|
||||
viewModel.updateDataFromWeb(sources)
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleSatData(
|
||||
|
|
|
@ -17,8 +17,6 @@
|
|||
*/
|
||||
package com.rtbishop.look4sat.presentation.entriesScreen
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.net.Uri
|
||||
import android.widget.SearchView
|
||||
import androidx.lifecycle.*
|
||||
import com.rtbishop.look4sat.domain.DataRepository
|
||||
|
@ -26,23 +24,16 @@ import com.rtbishop.look4sat.domain.model.DataState
|
|||
import com.rtbishop.look4sat.domain.model.SatItem
|
||||
import com.rtbishop.look4sat.framework.SettingsProvider
|
||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||
import kotlinx.coroutines.CoroutineExceptionHandler
|
||||
import kotlinx.coroutines.launch
|
||||
import timber.log.Timber
|
||||
import java.util.*
|
||||
import javax.inject.Inject
|
||||
|
||||
@HiltViewModel
|
||||
class EntriesViewModel @Inject constructor(
|
||||
private val preferences: SettingsProvider,
|
||||
private val resolver: ContentResolver,
|
||||
private val dataRepository: DataRepository
|
||||
) : ViewModel(), SearchView.OnQueryTextListener, EntriesAdapter.EntriesClickListener {
|
||||
|
||||
private val coroutineHandler = CoroutineExceptionHandler { _, throwable ->
|
||||
Timber.d(throwable)
|
||||
_satData.value = DataState.Error(null)
|
||||
}
|
||||
private val transModes = MutableLiveData(preferences.loadModesSelection())
|
||||
private val currentQuery = MutableLiveData(String())
|
||||
private val itemsWithModes = transModes.switchMap { modes ->
|
||||
|
@ -57,24 +48,6 @@ class EntriesViewModel @Inject constructor(
|
|||
private var shouldSelectAll = true
|
||||
val satData: LiveData<DataState<List<SatItem>>> = _satData
|
||||
|
||||
fun updateDataFromFile(uri: Uri) {
|
||||
viewModelScope.launch(coroutineHandler) {
|
||||
_satData.value = DataState.Loading
|
||||
runCatching {
|
||||
resolver.openInputStream(uri)?.use { stream ->
|
||||
dataRepository.updateDataFromFile(stream)
|
||||
}
|
||||
}.onFailure { _satData.value = DataState.Error(null) }
|
||||
}
|
||||
}
|
||||
|
||||
fun updateDataFromWeb(sources: List<String>) {
|
||||
viewModelScope.launch(coroutineHandler) {
|
||||
_satData.value = DataState.Loading
|
||||
dataRepository.updateDataFromWeb(sources)
|
||||
}
|
||||
}
|
||||
|
||||
fun selectCurrentItems() {
|
||||
val currentValue = _satData.value
|
||||
if (currentValue is DataState.Success) {
|
||||
|
@ -93,6 +66,7 @@ class EntriesViewModel @Inject constructor(
|
|||
}
|
||||
|
||||
fun setQuery(query: String) {
|
||||
shouldSelectAll = true
|
||||
currentQuery.value = query
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ import android.view.View
|
|||
import androidx.core.content.ContextCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.viewModels
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import com.rtbishop.look4sat.R
|
||||
import com.rtbishop.look4sat.databinding.FragmentMapBinding
|
||||
import com.rtbishop.look4sat.domain.predict.GeoPos
|
||||
|
@ -82,6 +83,7 @@ class MapFragment : Fragment(R.layout.fragment_map) {
|
|||
overlays.addAll(Array(4) { FolderOverlay() })
|
||||
}
|
||||
}
|
||||
binding.mapBack.setOnClickListener { findNavController().navigateUp() }
|
||||
binding.mapBtnPrev.setOnClickListener { viewModel.scrollSelection(true) }
|
||||
binding.mapBtnNext.setOnClickListener { viewModel.scrollSelection(false) }
|
||||
setupObservers(binding)
|
||||
|
|
|
@ -41,15 +41,6 @@ import java.util.*
|
|||
class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesClickListener {
|
||||
|
||||
private val passesViewModel: PassesViewModel by viewModels()
|
||||
// private val permReqContract = ActivityResultContracts.RequestMultiplePermissions()
|
||||
// private val locPermFine = Manifest.permission.ACCESS_FINE_LOCATION
|
||||
// private val locPermCoarse = Manifest.permission.ACCESS_COARSE_LOCATION
|
||||
// private val locPermReq = registerForActivityResult(permReqContract) { permissions ->
|
||||
// when {
|
||||
// permissions[locPermFine] == true -> passesViewModel.triggerInitialSetup()
|
||||
// permissions[locPermCoarse] == true -> passesViewModel.triggerInitialSetup()
|
||||
// }
|
||||
// }
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
@ -85,9 +76,6 @@ class PassesFragment : Fragment(R.layout.fragment_passes), PassesAdapter.PassesC
|
|||
passesViewModel.passes.observe(viewLifecycleOwner, { passesResult ->
|
||||
handleNewPasses(passesResult, passesAdapter, binding)
|
||||
})
|
||||
passesViewModel.isFirstLaunchDone.observe(viewLifecycleOwner, { setupDone ->
|
||||
// if (!setupDone) locPermReq.launch(arrayOf(locPermFine, locPermCoarse))
|
||||
})
|
||||
getNavResult<Pair<Int, Double>>(R.id.nav_passes, "prefs") { prefs ->
|
||||
passesViewModel.forceCalculation(prefs.first, prefs.second)
|
||||
}
|
||||
|
|
|
@ -38,10 +38,8 @@ class PassesViewModel @Inject constructor(
|
|||
) : ViewModel() {
|
||||
|
||||
private val _passes = MutableLiveData<DataState<List<SatPass>>>()
|
||||
private val _isFirstLaunchDone = MutableLiveData<Boolean>()
|
||||
private var passesProcessing: Job? = null
|
||||
val passes: LiveData<DataState<List<SatPass>>> = _passes
|
||||
val isFirstLaunchDone: LiveData<Boolean> = _isFirstLaunchDone
|
||||
|
||||
init {
|
||||
if (preferences.getSetupDone()) {
|
||||
|
@ -54,8 +52,6 @@ class PassesViewModel @Inject constructor(
|
|||
val minElev = preferences.getMinElevation()
|
||||
predictor.triggerCalculation(satellites, stationPos, timeNow, hoursAhead, minElev)
|
||||
}
|
||||
} else {
|
||||
_isFirstLaunchDone.value = false
|
||||
}
|
||||
viewModelScope.launch {
|
||||
predictor.passes.collect { passes ->
|
||||
|
@ -65,22 +61,6 @@ class PassesViewModel @Inject constructor(
|
|||
}
|
||||
}
|
||||
|
||||
fun triggerInitialSetup() {
|
||||
// preferences.updatePositionFromGPS()
|
||||
viewModelScope.launch {
|
||||
// _passes.postValue(DataState.Loading)
|
||||
// val satellites = dataRepository.getSelectedSatellites()
|
||||
// val stationPos = preferences.loadStationPosition()
|
||||
// val hoursAhead = preferences.getHoursAhead()
|
||||
// val minElev = preferences.getMinElevation()
|
||||
// dataRepository.updateDataFromWeb()
|
||||
// dataRepository.updateSelection(isSelected = true)
|
||||
// predictor.forceCalculation(satellites, stationPos, Date().time, hoursAhead, minElev)
|
||||
// preferences.setSetupDone()
|
||||
_isFirstLaunchDone.value = true
|
||||
}
|
||||
}
|
||||
|
||||
fun forceCalculation(
|
||||
hoursAhead: Int = preferences.getHoursAhead(),
|
||||
minElevation: Double = preferences.getMinElevation(),
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<item name="android:textColorPrimary">@color/themeLight</item>
|
||||
<item name="android:statusBarColor">@color/surfaceStatusbar</item>
|
||||
<item name="android:windowBackground">@color/surfaceBg</item>
|
||||
<item name="android:navigationBarColor">@color/surfaceToolbar</item>
|
||||
<item name="android:navigationBarColor">@color/surfaceStatusbar</item>
|
||||
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
|
||||
</style>
|
||||
|
||||
|
|
|
@ -8,14 +8,14 @@ buildscript {
|
|||
lifecycle_version = '2.4.0'
|
||||
navigation_version = '2.3.5'
|
||||
preference_version = '1.1.1'
|
||||
room_version = '2.4.0'
|
||||
room_version = '2.4.1'
|
||||
hilt_version = '2.40.5'
|
||||
json_version = '20211205'
|
||||
osmdroid_version = '6.1.11'
|
||||
timber_version = '5.0.1'
|
||||
junit_version = '4.13.2'
|
||||
mockito_version = '4.2.0'
|
||||
leak_canary_version = '2.8'
|
||||
leak_canary_version = '2.8.1'
|
||||
}
|
||||
repositories {
|
||||
google()
|
||||
|
|
Ładowanie…
Reference in New Issue