mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Removed interacting use cases for the sake of code simplicity
This commit is contained in:
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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+9
-13
@@ -25,13 +25,10 @@ import androidx.appcompat.app.AlertDialog
|
|||||||
import androidx.lifecycle.*
|
import androidx.lifecycle.*
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.rtbishop.look4sat.R
|
import com.rtbishop.look4sat.R
|
||||||
|
import com.rtbishop.look4sat.data.SatelliteRepo
|
||||||
import com.rtbishop.look4sat.domain.model.SatItem
|
import com.rtbishop.look4sat.domain.model.SatItem
|
||||||
import com.rtbishop.look4sat.framework.PreferencesProvider
|
import com.rtbishop.look4sat.framework.PreferencesProvider
|
||||||
import com.rtbishop.look4sat.framework.model.Result
|
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 dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -42,16 +39,13 @@ import javax.inject.Inject
|
|||||||
class EntriesViewModel @Inject constructor(
|
class EntriesViewModel @Inject constructor(
|
||||||
private val preferenceSource: PreferencesProvider,
|
private val preferenceSource: PreferencesProvider,
|
||||||
private val resolver: ContentResolver,
|
private val resolver: ContentResolver,
|
||||||
private val getSatItems: GetSatItems,
|
private val satelliteRepo: SatelliteRepo,
|
||||||
private val updateEntriesFromFile: UpdateEntriesFromFile,
|
|
||||||
private val updateEntriesFromWeb: UpdateEntriesFromWeb,
|
|
||||||
private val updateEntriesSelection: UpdateEntriesSelection,
|
|
||||||
) : ViewModel(), EntriesAdapter.EntriesClickListener, SearchView.OnQueryTextListener {
|
) : ViewModel(), EntriesAdapter.EntriesClickListener, SearchView.OnQueryTextListener {
|
||||||
|
|
||||||
private val transModes = MutableLiveData(preferenceSource.loadModesSelection())
|
private val transModes = MutableLiveData(preferenceSource.loadModesSelection())
|
||||||
private val currentQuery = MutableLiveData(String())
|
private val currentQuery = MutableLiveData(String())
|
||||||
private val itemsWithModes = transModes.switchMap { modes ->
|
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 ->
|
private val itemsWithQuery = currentQuery.switchMap { query ->
|
||||||
itemsWithModes.map { items -> Result.Success(filterByQuery(items, query)) }
|
itemsWithModes.map { items -> Result.Success(filterByQuery(items, query)) }
|
||||||
@@ -66,7 +60,9 @@ class EntriesViewModel @Inject constructor(
|
|||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_satData.value = Result.InProgress
|
_satData.value = Result.InProgress
|
||||||
runCatching {
|
runCatching {
|
||||||
resolver.openInputStream(uri)?.use { stream -> updateEntriesFromFile(stream) }
|
resolver.openInputStream(uri)?.use { stream ->
|
||||||
|
satelliteRepo.updateEntriesFromFile(stream)
|
||||||
|
}
|
||||||
}.onFailure { _satData.value = Result.Error(it) }
|
}.onFailure { _satData.value = Result.Error(it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -75,8 +71,8 @@ class EntriesViewModel @Inject constructor(
|
|||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_satData.value = Result.InProgress
|
_satData.value = Result.InProgress
|
||||||
runCatching {
|
runCatching {
|
||||||
if (sources == null) updateEntriesFromWeb()
|
if (sources == null) satelliteRepo.updateEntriesFromWeb()
|
||||||
else updateEntriesFromWeb(sources)
|
else satelliteRepo.updateEntriesFromWeb(sources)
|
||||||
}.onFailure { _satData.value = Result.Error(it) }
|
}.onFailure { _satData.value = Result.Error(it) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -129,7 +125,7 @@ class EntriesViewModel @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun updateSelection(catNums: List<Int>, isSelected: Boolean) {
|
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> {
|
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 androidx.lifecycle.*
|
||||||
import com.rtbishop.look4sat.data.PreferenceSource
|
import com.rtbishop.look4sat.data.PreferenceSource
|
||||||
|
import com.rtbishop.look4sat.data.SatelliteRepo
|
||||||
import com.rtbishop.look4sat.di.DefaultDispatcher
|
import com.rtbishop.look4sat.di.DefaultDispatcher
|
||||||
import com.rtbishop.look4sat.domain.predict4kotlin.Position
|
import com.rtbishop.look4sat.domain.predict4kotlin.Position
|
||||||
import com.rtbishop.look4sat.domain.predict4kotlin.Satellite
|
import com.rtbishop.look4sat.domain.predict4kotlin.Satellite
|
||||||
import com.rtbishop.look4sat.domain.predict4kotlin.StationPosition
|
import com.rtbishop.look4sat.domain.predict4kotlin.StationPosition
|
||||||
import com.rtbishop.look4sat.framework.model.SatData
|
import com.rtbishop.look4sat.framework.model.SatData
|
||||||
import com.rtbishop.look4sat.interactors.GetSelectedSatellites
|
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@@ -36,7 +36,7 @@ import kotlin.math.sqrt
|
|||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class MapViewModel @Inject constructor(
|
class MapViewModel @Inject constructor(
|
||||||
private val getSelectedSatellites: GetSelectedSatellites,
|
private val satelliteRepo: SatelliteRepo,
|
||||||
private val preferenceSource: PreferenceSource,
|
private val preferenceSource: PreferenceSource,
|
||||||
@DefaultDispatcher private val defaultDispatcher: CoroutineDispatcher
|
@DefaultDispatcher private val defaultDispatcher: CoroutineDispatcher
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
@@ -66,7 +66,7 @@ class MapViewModel @Inject constructor(
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
getSelectedSatellites().also { selectedSatellites ->
|
satelliteRepo.getSelectedSatellites().also { selectedSatellites ->
|
||||||
if (selectedSatellites.isNotEmpty()) {
|
if (selectedSatellites.isNotEmpty()) {
|
||||||
allSatList = selectedSatellites
|
allSatList = selectedSatellites
|
||||||
selectSatellite(selectedSatellites.first())
|
selectSatellite(selectedSatellites.first())
|
||||||
|
|||||||
+5
-5
@@ -21,11 +21,11 @@ import androidx.lifecycle.LiveData
|
|||||||
import androidx.lifecycle.MutableLiveData
|
import androidx.lifecycle.MutableLiveData
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import androidx.lifecycle.viewModelScope
|
import androidx.lifecycle.viewModelScope
|
||||||
import com.rtbishop.look4sat.framework.model.Result
|
|
||||||
import com.rtbishop.look4sat.data.PassesRepo
|
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.domain.predict4kotlin.SatPass
|
||||||
import com.rtbishop.look4sat.framework.PreferencesProvider
|
import com.rtbishop.look4sat.framework.PreferencesProvider
|
||||||
|
import com.rtbishop.look4sat.framework.model.Result
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
import kotlinx.coroutines.flow.collect
|
import kotlinx.coroutines.flow.collect
|
||||||
@@ -33,7 +33,7 @@ import javax.inject.Inject
|
|||||||
|
|
||||||
@HiltViewModel
|
@HiltViewModel
|
||||||
class PassesViewModel @Inject constructor(
|
class PassesViewModel @Inject constructor(
|
||||||
private val getSelectedSatellites: GetSelectedSatellites,
|
private val satelliteRepo: SatelliteRepo,
|
||||||
private val passesRepo: PassesRepo,
|
private val passesRepo: PassesRepo,
|
||||||
private val preferenceSource: PreferencesProvider
|
private val preferenceSource: PreferencesProvider
|
||||||
) : ViewModel() {
|
) : ViewModel() {
|
||||||
@@ -45,7 +45,7 @@ class PassesViewModel @Inject constructor(
|
|||||||
init {
|
init {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_passes.postValue(Result.InProgress)
|
_passes.postValue(Result.InProgress)
|
||||||
passesRepo.triggerCalculation(getSelectedSatellites())
|
passesRepo.triggerCalculation(satelliteRepo.getSelectedSatellites())
|
||||||
}
|
}
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
passesRepo.passes.collect { passes ->
|
passesRepo.passes.collect { passes ->
|
||||||
@@ -59,7 +59,7 @@ class PassesViewModel @Inject constructor(
|
|||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
_passes.postValue(Result.InProgress)
|
_passes.postValue(Result.InProgress)
|
||||||
passesProcessing?.cancelAndJoin()
|
passesProcessing?.cancelAndJoin()
|
||||||
passesRepo.forceCalculation(getSelectedSatellites())
|
passesRepo.forceCalculation(satelliteRepo.getSelectedSatellites())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,13 +18,13 @@
|
|||||||
package com.rtbishop.look4sat.presentation.polarScreen
|
package com.rtbishop.look4sat.presentation.polarScreen
|
||||||
|
|
||||||
import androidx.lifecycle.*
|
import androidx.lifecycle.*
|
||||||
|
import com.rtbishop.look4sat.data.PassesRepo
|
||||||
import com.rtbishop.look4sat.data.PreferenceSource
|
import com.rtbishop.look4sat.data.PreferenceSource
|
||||||
|
import com.rtbishop.look4sat.data.SatelliteRepo
|
||||||
import com.rtbishop.look4sat.di.IoDispatcher
|
import com.rtbishop.look4sat.di.IoDispatcher
|
||||||
import com.rtbishop.look4sat.domain.model.SatTrans
|
import com.rtbishop.look4sat.domain.model.SatTrans
|
||||||
import com.rtbishop.look4sat.domain.predict4kotlin.SatPass
|
import com.rtbishop.look4sat.domain.predict4kotlin.SatPass
|
||||||
import com.rtbishop.look4sat.interactors.GetSatTransmitters
|
|
||||||
import com.rtbishop.look4sat.framework.OrientationProvider
|
import com.rtbishop.look4sat.framework.OrientationProvider
|
||||||
import com.rtbishop.look4sat.data.PassesRepo
|
|
||||||
import com.rtbishop.look4sat.utility.round
|
import com.rtbishop.look4sat.utility.round
|
||||||
import dagger.hilt.android.lifecycle.HiltViewModel
|
import dagger.hilt.android.lifecycle.HiltViewModel
|
||||||
import kotlinx.coroutines.*
|
import kotlinx.coroutines.*
|
||||||
@@ -39,7 +39,7 @@ class PolarViewModel @Inject constructor(
|
|||||||
private val orientationProvider: OrientationProvider,
|
private val orientationProvider: OrientationProvider,
|
||||||
private val preferenceSource: PreferenceSource,
|
private val preferenceSource: PreferenceSource,
|
||||||
private val passesRepo: PassesRepo,
|
private val passesRepo: PassesRepo,
|
||||||
private val getSatTransmitters: GetSatTransmitters,
|
private val satelliteRepo: SatelliteRepo,
|
||||||
@IoDispatcher private val ioDispatcher: CoroutineDispatcher
|
@IoDispatcher private val ioDispatcher: CoroutineDispatcher
|
||||||
) : ViewModel(), OrientationProvider.OrientationListener {
|
) : ViewModel(), OrientationProvider.OrientationListener {
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ class PolarViewModel @Inject constructor(
|
|||||||
|
|
||||||
private fun processTransmitters(satPass: SatPass) {
|
private fun processTransmitters(satPass: SatPass) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
getSatTransmitters(satPass.catNum).collect { transList ->
|
satelliteRepo.getSatTransmitters(satPass.catNum).collect { transList ->
|
||||||
while (isActive) {
|
while (isActive) {
|
||||||
val timeNow = Date()
|
val timeNow = Date()
|
||||||
val copiedList = transList.map { it.copy() }
|
val copiedList = transList.map { it.copy() }
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ class SatelliteRepo(
|
|||||||
private val remoteSource: RemoteDataSource,
|
private val remoteSource: RemoteDataSource,
|
||||||
private val ioDispatcher: CoroutineDispatcher
|
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<List<SatItem>> {
|
fun getSatItems(): Flow<List<SatItem>> {
|
||||||
return localSource.getSatItems()
|
return localSource.getSatItems()
|
||||||
@@ -34,7 +40,7 @@ class SatelliteRepo(
|
|||||||
localSource.updateEntries(importSatEntries(stream))
|
localSource.updateEntries(importSatEntries(stream))
|
||||||
}
|
}
|
||||||
|
|
||||||
suspend fun updateEntriesFromWeb(sources: List<String>) {
|
suspend fun updateEntriesFromWeb(sources: List<String> = defaultSources) {
|
||||||
coroutineScope {
|
coroutineScope {
|
||||||
launch(ioDispatcher) {
|
launch(ioDispatcher) {
|
||||||
val streams = mutableListOf<InputStream>()
|
val streams = mutableListOf<InputStream>()
|
||||||
|
|||||||
@@ -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<List<SatItem>> {
|
|
||||||
return satelliteRepo.getSatItems()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<List<SatTrans>> {
|
|
||||||
return satelliteRepo.getSatTransmitters(catNum)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<Satellite> {
|
|
||||||
return satelliteRepo.getSelectedSatellites()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<String> = defaultSources) {
|
|
||||||
satelliteRepo.updateEntriesFromWeb(sources)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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<Int>, isSelected: Boolean) {
|
|
||||||
satelliteRepo.updateEntriesSelection(catNums, isSelected)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in new issue
Block a user