Removed interacting use cases for the sake of code simplicity

This commit is contained in:
Arty Bishop committed 2021-05-16 19:13:10 +01:00
1 parent 0110de8104
commit c91c58ac69
12 files changed
+28 -159

No files matched your search

@@ -1,60 +0,0 @@
/*
* Look4Sat. Amateur radio satellite tracker and pass predictor.
* Copyright (C) 2019-2021 Arty Bishop (bishop.arty@gmail.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
package com.rtbishop.look4sat.di
import com.rtbishop.look4sat.data.SatelliteRepo
import com.rtbishop.look4sat.interactors.*
import dagger.Module
import dagger.Provides
import dagger.hilt.InstallIn
import dagger.hilt.components.SingletonComponent
@Module
@InstallIn(SingletonComponent::class)
object InteractorsModule {
@Provides
fun provideGetSatItemsUseCase(satelliteRepo: SatelliteRepo): GetSatItems {
return GetSatItems(satelliteRepo)
}
@Provides
fun provideGetSelectedSatellitesUseCase(satelliteRepo: SatelliteRepo): GetSelectedSatellites {
return GetSelectedSatellites(satelliteRepo)
}
@Provides
fun provideGetSatTransmittersUseCase(satelliteRepo: SatelliteRepo): GetSatTransmitters {
return GetSatTransmitters(satelliteRepo)
}
@Provides
fun provideUpdateEntriesFromFileUseCase(satelliteRepo: SatelliteRepo): UpdateEntriesFromFile {
return UpdateEntriesFromFile(satelliteRepo)
}
@Provides
fun provideUpdateEntriesFromWebUseCase(satelliteRepo: SatelliteRepo): UpdateEntriesFromWeb {
return UpdateEntriesFromWeb(satelliteRepo)
}
@Provides
fun provideUpdateEntriesSelectionUseCase(satelliteRepo: SatelliteRepo): UpdateEntriesSelection {
return UpdateEntriesSelection(satelliteRepo)
}
}
@@ -25,13 +25,10 @@ import androidx.appcompat.app.AlertDialog
import androidx.lifecycle.*
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.rtbishop.look4sat.R
import com.rtbishop.look4sat.data.SatelliteRepo
import com.rtbishop.look4sat.domain.model.SatItem
import com.rtbishop.look4sat.framework.PreferencesProvider
import com.rtbishop.look4sat.framework.model.Result
import com.rtbishop.look4sat.interactors.GetSatItems
import com.rtbishop.look4sat.interactors.UpdateEntriesFromFile
import com.rtbishop.look4sat.interactors.UpdateEntriesFromWeb
import com.rtbishop.look4sat.interactors.UpdateEntriesSelection
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.launch
@@ -42,16 +39,13 @@ import javax.inject.Inject
class EntriesViewModel @Inject constructor(
private val preferenceSource: PreferencesProvider,
private val resolver: ContentResolver,
private val getSatItems: GetSatItems,
private val updateEntriesFromFile: UpdateEntriesFromFile,
private val updateEntriesFromWeb: UpdateEntriesFromWeb,
private val updateEntriesSelection: UpdateEntriesSelection,
private val satelliteRepo: SatelliteRepo,
) : ViewModel(), EntriesAdapter.EntriesClickListener, SearchView.OnQueryTextListener {
private val transModes = MutableLiveData(preferenceSource.loadModesSelection())
private val currentQuery = MutableLiveData(String())
private val itemsWithModes = transModes.switchMap { modes ->
liveData { getSatItems().collect { emit(filterByModes(it, modes)) } }
liveData { satelliteRepo.getSatItems().collect { emit(filterByModes(it, modes)) } }
}
private val itemsWithQuery = currentQuery.switchMap { query ->
itemsWithModes.map { items -> Result.Success(filterByQuery(items, query)) }
@@ -66,7 +60,9 @@ class EntriesViewModel @Inject constructor(
viewModelScope.launch {
_satData.value = Result.InProgress
runCatching {
resolver.openInputStream(uri)?.use { stream -> updateEntriesFromFile(stream) }
resolver.openInputStream(uri)?.use { stream ->
satelliteRepo.updateEntriesFromFile(stream)
}
}.onFailure { _satData.value = Result.Error(it) }
}
}
@@ -75,8 +71,8 @@ class EntriesViewModel @Inject constructor(
viewModelScope.launch {
_satData.value = Result.InProgress
runCatching {
if (sources == null) updateEntriesFromWeb()
else updateEntriesFromWeb(sources)
if (sources == null) satelliteRepo.updateEntriesFromWeb()
else satelliteRepo.updateEntriesFromWeb(sources)
}.onFailure { _satData.value = Result.Error(it) }
}
}
@@ -129,7 +125,7 @@ class EntriesViewModel @Inject constructor(
}
override fun updateSelection(catNums: List<Int>, isSelected: Boolean) {
viewModelScope.launch { updateEntriesSelection(catNums, isSelected) }
viewModelScope.launch { satelliteRepo.updateEntriesSelection(catNums, isSelected) }
}
private fun filterByModes(items: List<SatItem>, modes: List<String>): List<SatItem> {
@@ -19,12 +19,12 @@ package com.rtbishop.look4sat.presentation.mapScreen
import androidx.lifecycle.*
import com.rtbishop.look4sat.data.PreferenceSource
import com.rtbishop.look4sat.data.SatelliteRepo
import com.rtbishop.look4sat.di.DefaultDispatcher
import com.rtbishop.look4sat.domain.predict4kotlin.Position
import com.rtbishop.look4sat.domain.predict4kotlin.Satellite
import com.rtbishop.look4sat.domain.predict4kotlin.StationPosition
import com.rtbishop.look4sat.framework.model.SatData
import com.rtbishop.look4sat.interactors.GetSelectedSatellites
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.*
import java.util.*
@@ -36,7 +36,7 @@ import kotlin.math.sqrt
@HiltViewModel
class MapViewModel @Inject constructor(
private val getSelectedSatellites: GetSelectedSatellites,
private val satelliteRepo: SatelliteRepo,
private val preferenceSource: PreferenceSource,
@DefaultDispatcher private val defaultDispatcher: CoroutineDispatcher
) : ViewModel() {
@@ -66,7 +66,7 @@ class MapViewModel @Inject constructor(
init {
viewModelScope.launch {
getSelectedSatellites().also { selectedSatellites ->
satelliteRepo.getSelectedSatellites().also { selectedSatellites ->
if (selectedSatellites.isNotEmpty()) {
allSatList = selectedSatellites
selectSatellite(selectedSatellites.first())
@@ -21,11 +21,11 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.rtbishop.look4sat.framework.model.Result
import com.rtbishop.look4sat.data.PassesRepo
import com.rtbishop.look4sat.interactors.GetSelectedSatellites
import com.rtbishop.look4sat.data.SatelliteRepo
import com.rtbishop.look4sat.domain.predict4kotlin.SatPass
import com.rtbishop.look4sat.framework.PreferencesProvider
import com.rtbishop.look4sat.framework.model.Result
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.collect
@@ -33,7 +33,7 @@ import javax.inject.Inject
@HiltViewModel
class PassesViewModel @Inject constructor(
private val getSelectedSatellites: GetSelectedSatellites,
private val satelliteRepo: SatelliteRepo,
private val passesRepo: PassesRepo,
private val preferenceSource: PreferencesProvider
) : ViewModel() {
@@ -45,7 +45,7 @@ class PassesViewModel @Inject constructor(
init {
viewModelScope.launch {
_passes.postValue(Result.InProgress)
passesRepo.triggerCalculation(getSelectedSatellites())
passesRepo.triggerCalculation(satelliteRepo.getSelectedSatellites())
}
viewModelScope.launch {
passesRepo.passes.collect { passes ->
@@ -59,7 +59,7 @@ class PassesViewModel @Inject constructor(
viewModelScope.launch {
_passes.postValue(Result.InProgress)
passesProcessing?.cancelAndJoin()
passesRepo.forceCalculation(getSelectedSatellites())
passesRepo.forceCalculation(satelliteRepo.getSelectedSatellites())
}
}
@@ -18,13 +18,13 @@
package com.rtbishop.look4sat.presentation.polarScreen
import androidx.lifecycle.*
import com.rtbishop.look4sat.data.PassesRepo
import com.rtbishop.look4sat.data.PreferenceSource
import com.rtbishop.look4sat.data.SatelliteRepo
import com.rtbishop.look4sat.di.IoDispatcher
import com.rtbishop.look4sat.domain.model.SatTrans
import com.rtbishop.look4sat.domain.predict4kotlin.SatPass
import com.rtbishop.look4sat.interactors.GetSatTransmitters
import com.rtbishop.look4sat.framework.OrientationProvider
import com.rtbishop.look4sat.data.PassesRepo
import com.rtbishop.look4sat.utility.round
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.*
@@ -39,7 +39,7 @@ class PolarViewModel @Inject constructor(
private val orientationProvider: OrientationProvider,
private val preferenceSource: PreferenceSource,
private val passesRepo: PassesRepo,
private val getSatTransmitters: GetSatTransmitters,
private val satelliteRepo: SatelliteRepo,
@IoDispatcher private val ioDispatcher: CoroutineDispatcher
) : ViewModel(), OrientationProvider.OrientationListener {
@@ -97,7 +97,7 @@ class PolarViewModel @Inject constructor(
private fun processTransmitters(satPass: SatPass) {
viewModelScope.launch {
getSatTransmitters(satPass.catNum).collect { transList ->
satelliteRepo.getSatTransmitters(satPass.catNum).collect { transList ->
while (isActive) {
val timeNow = Date()
val copiedList = transList.map { it.copy() }