diff --git a/app/src/main/java/com/rtbishop/look4sat/di/InteractorsModule.kt b/app/src/main/java/com/rtbishop/look4sat/di/InteractorsModule.kt
deleted file mode 100644
index 4bf0cd31..00000000
--- a/app/src/main/java/com/rtbishop/look4sat/di/InteractorsModule.kt
+++ /dev/null
@@ -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 .
- */
-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)
- }
-}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt
index 84b9f2aa..f8ef64ef 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/entriesScreen/EntriesViewModel.kt
@@ -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, isSelected: Boolean) {
- viewModelScope.launch { updateEntriesSelection(catNums, isSelected) }
+ viewModelScope.launch { satelliteRepo.updateEntriesSelection(catNums, isSelected) }
}
private fun filterByModes(items: List, modes: List): List {
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt
index b3da0947..6f72a5b7 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/mapScreen/MapViewModel.kt
@@ -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())
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt
index 6135a603..b1dc7196 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/passesScreen/PassesViewModel.kt
@@ -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())
}
}
diff --git a/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarViewModel.kt b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarViewModel.kt
index ac3e6700..7fd10de4 100644
--- a/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarViewModel.kt
+++ b/app/src/main/java/com/rtbishop/look4sat/presentation/polarScreen/PolarViewModel.kt
@@ -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() }
diff --git a/core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt b/core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt
index bfa95dd0..c7ef6dde 100644
--- a/core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt
+++ b/core/src/main/java/com/rtbishop/look4sat/data/SatelliteRepo.kt
@@ -17,6 +17,12 @@ class SatelliteRepo(
private val remoteSource: RemoteDataSource,
private val ioDispatcher: CoroutineDispatcher
) {
+ private val defaultSources = listOf(
+ "https://celestrak.com/NORAD/elements/active.txt",
+ "https://amsat.org/tle/current/nasabare.txt",
+ "https://www.prismnet.com/~mmccants/tles/classfd.zip",
+ "https://www.prismnet.com/~mmccants/tles/inttles.zip"
+ )
fun getSatItems(): Flow> {
return localSource.getSatItems()
@@ -34,7 +40,7 @@ class SatelliteRepo(
localSource.updateEntries(importSatEntries(stream))
}
- suspend fun updateEntriesFromWeb(sources: List) {
+ suspend fun updateEntriesFromWeb(sources: List = defaultSources) {
coroutineScope {
launch(ioDispatcher) {
val streams = mutableListOf()
diff --git a/core/src/main/java/com/rtbishop/look4sat/interactors/GetSatItems.kt b/core/src/main/java/com/rtbishop/look4sat/interactors/GetSatItems.kt
deleted file mode 100644
index 2a38fb70..00000000
--- a/core/src/main/java/com/rtbishop/look4sat/interactors/GetSatItems.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.rtbishop.look4sat.interactors
-
-import com.rtbishop.look4sat.data.SatelliteRepo
-import com.rtbishop.look4sat.domain.model.SatItem
-import kotlinx.coroutines.flow.Flow
-
-class GetSatItems(private val satelliteRepo: SatelliteRepo) {
-
- operator fun invoke(): Flow> {
- return satelliteRepo.getSatItems()
- }
-}
diff --git a/core/src/main/java/com/rtbishop/look4sat/interactors/GetSatTransmitters.kt b/core/src/main/java/com/rtbishop/look4sat/interactors/GetSatTransmitters.kt
deleted file mode 100644
index 79115ea0..00000000
--- a/core/src/main/java/com/rtbishop/look4sat/interactors/GetSatTransmitters.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.rtbishop.look4sat.interactors
-
-import com.rtbishop.look4sat.data.SatelliteRepo
-import com.rtbishop.look4sat.domain.model.SatTrans
-import kotlinx.coroutines.flow.Flow
-
-class GetSatTransmitters(private val satelliteRepo: SatelliteRepo) {
-
- operator fun invoke(catNum: Int): Flow> {
- return satelliteRepo.getSatTransmitters(catNum)
- }
-}
diff --git a/core/src/main/java/com/rtbishop/look4sat/interactors/GetSelectedSatellites.kt b/core/src/main/java/com/rtbishop/look4sat/interactors/GetSelectedSatellites.kt
deleted file mode 100644
index fb4966b1..00000000
--- a/core/src/main/java/com/rtbishop/look4sat/interactors/GetSelectedSatellites.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.rtbishop.look4sat.interactors
-
-import com.rtbishop.look4sat.data.SatelliteRepo
-import com.rtbishop.look4sat.domain.predict4kotlin.Satellite
-
-class GetSelectedSatellites(private val satelliteRepo: SatelliteRepo) {
-
- suspend operator fun invoke(): List {
- return satelliteRepo.getSelectedSatellites()
- }
-}
diff --git a/core/src/main/java/com/rtbishop/look4sat/interactors/UpdateEntriesFromFile.kt b/core/src/main/java/com/rtbishop/look4sat/interactors/UpdateEntriesFromFile.kt
deleted file mode 100644
index 47f8413b..00000000
--- a/core/src/main/java/com/rtbishop/look4sat/interactors/UpdateEntriesFromFile.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.rtbishop.look4sat.interactors
-
-import com.rtbishop.look4sat.data.SatelliteRepo
-import java.io.InputStream
-
-class UpdateEntriesFromFile(private val satelliteRepo: SatelliteRepo) {
-
- suspend operator fun invoke(stream: InputStream) {
- satelliteRepo.updateEntriesFromFile(stream)
- }
-}
diff --git a/core/src/main/java/com/rtbishop/look4sat/interactors/UpdateEntriesFromWeb.kt b/core/src/main/java/com/rtbishop/look4sat/interactors/UpdateEntriesFromWeb.kt
deleted file mode 100644
index 5f94ef30..00000000
--- a/core/src/main/java/com/rtbishop/look4sat/interactors/UpdateEntriesFromWeb.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.rtbishop.look4sat.interactors
-
-import com.rtbishop.look4sat.data.SatelliteRepo
-
-class UpdateEntriesFromWeb(private val satelliteRepo: SatelliteRepo) {
-
- private val defaultSources = listOf(
- "https://celestrak.com/NORAD/elements/active.txt",
- "https://amsat.org/tle/current/nasabare.txt",
- "https://www.prismnet.com/~mmccants/tles/classfd.zip",
- "https://www.prismnet.com/~mmccants/tles/inttles.zip"
- )
-
- suspend operator fun invoke(sources: List = defaultSources) {
- satelliteRepo.updateEntriesFromWeb(sources)
- }
-}
diff --git a/core/src/main/java/com/rtbishop/look4sat/interactors/UpdateEntriesSelection.kt b/core/src/main/java/com/rtbishop/look4sat/interactors/UpdateEntriesSelection.kt
deleted file mode 100644
index 64266dcf..00000000
--- a/core/src/main/java/com/rtbishop/look4sat/interactors/UpdateEntriesSelection.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.rtbishop.look4sat.interactors
-
-import com.rtbishop.look4sat.data.SatelliteRepo
-
-class UpdateEntriesSelection(private val satelliteRepo: SatelliteRepo) {
-
- suspend operator fun invoke(catNums: List, isSelected: Boolean) {
- satelliteRepo.updateEntriesSelection(catNums, isSelected)
- }
-}