Moved satellite selections storage to SharedPreferences

This commit is contained in:
Arty Bishop committed 2022-02-19 12:10:30 +00:00
1 parent a7c840d532
commit 92eec290b1
10 files changed
+88 -96

No files matched your search

@@ -22,8 +22,8 @@ import com.rtbishop.look4sat.domain.IDataRepository
import com.rtbishop.look4sat.domain.model.DataState
import com.rtbishop.look4sat.domain.model.SatEntry
import com.rtbishop.look4sat.domain.model.SatItem
import com.rtbishop.look4sat.domain.predict.Satellite
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.StateFlow
import java.io.InputStream
@@ -43,13 +43,23 @@ class DataRepository(
_updateState.value = DataState.Error(exception.message)
}
private val _updateState = MutableStateFlow<DataState<Long>>(DataState.Handled)
override val dataUpdateState: StateFlow<DataState<Long>> = _updateState
override val updateState: StateFlow<DataState<Long>> = _updateState
override fun setDataUpdateHandled() {
_updateState.value = DataState.Handled
override suspend fun getAllSatellites(): List<SatItem> {
val selection = settings.loadSatelliteSelection()
val satellites = localSource.getAllSatellites()
satellites.forEach { satItem -> satItem.isSelected = satItem.catnum in selection }
return satellites
}
override fun updateDataFromFile(uri: String) {
override suspend fun getSelectedSatellites(): List<Satellite> {
val selection = settings.loadSatelliteSelection()
return localSource.getSelectedSatellites(selection)
}
override suspend fun getTransmitters(catnum: Int) = localSource.getTransmitters(catnum)
override fun updateFromFile(uri: String) {
repositoryScope.launch(exceptionHandler) {
_updateState.value = DataState.Loading
val updateTimeMillis = measureTimeMillis {
@@ -61,7 +71,7 @@ class DataRepository(
}
}
override fun updateDataFromWeb(sources: List<String>) {
override fun updateFromWeb(sources: List<String>) {
_updateState.value = DataState.Loading
repositoryScope.launch(exceptionHandler) {
settings.saveDataSources(sources)
@@ -102,23 +112,21 @@ class DataRepository(
}
}
override fun clearData() {
override fun updatesSelection(catnums: List<Int>) {
repositoryScope.launch {
_updateState.value = DataState.Loading
localSource.clearData()
_updateState.value = DataState.Success(0L)
settings.saveSatelliteSelection(catnums)
}
}
override fun getSatelliteItems(): Flow<List<SatItem>> = localSource.getSatelliteItems()
override fun setUpdateStateHandled() {
_updateState.value = DataState.Handled
}
override suspend fun getSelectedSatellites() = localSource.getSelectedSatellites()
override suspend fun getTransmitters(catnum: Int) = localSource.getTransmitters(catnum)
override fun updateSelection(catnums: List<Int>) {
override fun clearAllData() {
repositoryScope.launch {
localSource.updateEntriesSelection(catnums)
_updateState.value = DataState.Loading
localSource.clearAllData()
_updateState.value = DataState.Success(0L)
}
}
@@ -21,24 +21,21 @@ import com.rtbishop.look4sat.domain.model.SatEntry
import com.rtbishop.look4sat.domain.model.SatItem
import com.rtbishop.look4sat.domain.model.Transmitter
import com.rtbishop.look4sat.domain.predict.Satellite
import kotlinx.coroutines.flow.Flow
import java.io.InputStream
interface ILocalSource {
fun getSatelliteItems(): Flow<List<SatItem>>
suspend fun getAllSatellites(): List<SatItem>
suspend fun getFileStream(uri: String): InputStream?
suspend fun getSelectedSatellites(): List<Satellite>
suspend fun getSelectedSatellites(catnums: List<Int>): List<Satellite>
suspend fun getTransmitters(catnum: Int): List<Transmitter>
suspend fun updateEntries(entries: List<SatEntry>)
suspend fun getFileStream(uri: String): InputStream?
suspend fun updateEntriesSelection(catnums: List<Int>)
suspend fun updateEntries(entries: List<SatEntry>)
suspend fun updateTransmitters(transmitters: List<Transmitter>)
suspend fun clearData()
suspend fun clearAllData()
}
@@ -59,6 +59,10 @@ interface ISettingsHandler {
fun loadModesSelection(): List<String>
fun saveSatelliteSelection(catnums: List<Int>)
fun loadSatelliteSelection(): List<Int>
fun getRotatorEnabled(): Boolean
fun setRotatorEnabled(value: Boolean)
@@ -21,26 +21,25 @@ import com.rtbishop.look4sat.domain.model.DataState
import com.rtbishop.look4sat.domain.model.SatItem
import com.rtbishop.look4sat.domain.model.Transmitter
import com.rtbishop.look4sat.domain.predict.Satellite
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.StateFlow
interface IDataRepository {
val dataUpdateState: StateFlow<DataState<Long>>
val updateState: StateFlow<DataState<Long>>
fun setDataUpdateHandled()
fun updateDataFromFile(uri: String)
fun updateDataFromWeb(sources: List<String>)
fun clearData()
fun getSatelliteItems(): Flow<List<SatItem>>
suspend fun getAllSatellites(): List<SatItem>
suspend fun getSelectedSatellites(): List<Satellite>
suspend fun getTransmitters(catnum: Int): List<Transmitter>
fun updateSelection(catnums: List<Int>)
fun updateFromFile(uri: String)
fun updateFromWeb(sources: List<String>)
fun updatesSelection(catnums: List<Int>)
fun setUpdateStateHandled()
fun clearAllData()
}