mirror of
https://github.com/rt-bishop/Look4Sat.git
synced 2026-10-02 03:15:37 +00:00
Fixed manual OMM (.csv) data import, tweaked messaging
This commit is contained in:
1 parent
6d2b0ced49
commit
4585332b1a
10 files changed
+333
-48
No files matched your search
+1
-1
@@ -161,7 +161,7 @@ fun DataSourcesDialog(
|
||||
onImportTle()
|
||||
onDismiss()
|
||||
},
|
||||
text = "TLE (3LE)\nR4UAB (.txt)",
|
||||
text = "TLE/3LE (.txt)\nOMM (.csv)",
|
||||
modifier = Modifier.weight(1f)
|
||||
)
|
||||
CardButton(
|
||||
|
||||
+6
-3
@@ -357,7 +357,7 @@ private fun LocationCard(
|
||||
@Composable
|
||||
private fun DataCardPreview() = MainTheme {
|
||||
val settings = DataSettings(true, 5000, 2500, 0L)
|
||||
DataCard(settings = settings, {}, {}, {})
|
||||
DataCard(settings = settings, updateFromWeb = {}, clearAllData = {}, showDataSourcesDialog = {})
|
||||
}
|
||||
|
||||
@Composable
|
||||
@@ -672,12 +672,15 @@ private fun rememberSettingsPermissions(
|
||||
else sendAction(SettingsAction.ShowToast(locationError))
|
||||
}
|
||||
|
||||
val satellitesImportError = stringResource(R.string.prefs_data_import_satellites_error)
|
||||
val transceiversImportError = stringResource(R.string.prefs_data_import_transceivers_error)
|
||||
|
||||
val tleRequest = rememberLauncherForActivityResult(ActivityResultContracts.GetContent()) { uri ->
|
||||
uri?.let { sendAction(SettingsAction.UpdateTLEFromFile(it.toString())) }
|
||||
uri?.let { sendAction(SettingsAction.UpdateTLEFromFile(it.toString(), satellitesImportError)) }
|
||||
}
|
||||
|
||||
val transceiversRequest = rememberLauncherForActivityResult(ActivityResultContracts.GetContent()) { uri ->
|
||||
uri?.let { sendAction(SettingsAction.UpdateTransceiversFromFile(it.toString())) }
|
||||
uri?.let { sendAction(SettingsAction.UpdateTransceiversFromFile(it.toString(), transceiversImportError)) }
|
||||
}
|
||||
|
||||
val bluetoothError = stringResource(R.string.prefs_bt_perm_error)
|
||||
|
||||
+6
-3
@@ -28,7 +28,10 @@ data class PositionSettings(
|
||||
)
|
||||
|
||||
data class DataSettings(
|
||||
val isUpdating: Boolean, val entriesTotal: Int, val radiosTotal: Int, val timestamp: Long
|
||||
val isUpdating: Boolean,
|
||||
val entriesTotal: Int,
|
||||
val radiosTotal: Int,
|
||||
val timestamp: Long
|
||||
)
|
||||
|
||||
data class SettingsState(
|
||||
@@ -50,8 +53,8 @@ sealed interface SettingsAction {
|
||||
|
||||
// Data
|
||||
data object UpdateFromWeb : SettingsAction
|
||||
data class UpdateTLEFromFile(val uri: String) : SettingsAction
|
||||
data class UpdateTransceiversFromFile(val uri: String) : SettingsAction
|
||||
data class UpdateTLEFromFile(val uri: String, val invalidFileMessage: String) : SettingsAction
|
||||
data class UpdateTransceiversFromFile(val uri: String, val invalidFileMessage: String) : SettingsAction
|
||||
data object ClearAllData : SettingsAction
|
||||
|
||||
// Toggles
|
||||
|
||||
+24
-10
@@ -65,11 +65,11 @@ class SettingsViewModel(
|
||||
settingsRepo.databaseState.collect { state ->
|
||||
_uiState.update {
|
||||
it.copy(
|
||||
dataSettings = DataSettings(
|
||||
false,
|
||||
state.numberOfSatellites,
|
||||
state.numberOfRadios,
|
||||
state.updateTimestamp
|
||||
dataSettings = it.dataSettings.copy(
|
||||
isUpdating = false,
|
||||
entriesTotal = state.numberOfSatellites,
|
||||
radiosTotal = state.numberOfRadios,
|
||||
timestamp = state.updateTimestamp
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -107,11 +107,11 @@ class SettingsViewModel(
|
||||
SettingsAction.DismissPosMessages -> dismissPosMessage()
|
||||
// Data
|
||||
SettingsAction.UpdateFromWeb -> runDataUpdate { databaseRepo.updateFromRemote() }
|
||||
is SettingsAction.UpdateTLEFromFile -> runDataUpdate { databaseRepo.updateTLEFromFile(action.uri) }
|
||||
is SettingsAction.UpdateTransceiversFromFile -> runDataUpdate {
|
||||
databaseRepo.updateTransceiversFromFile(
|
||||
action.uri
|
||||
)
|
||||
is SettingsAction.UpdateTLEFromFile -> runManualImport(action.invalidFileMessage) {
|
||||
databaseRepo.updateTLEFromFile(action.uri)
|
||||
}
|
||||
is SettingsAction.UpdateTransceiversFromFile -> runManualImport(action.invalidFileMessage) {
|
||||
databaseRepo.updateTransceiversFromFile(action.uri)
|
||||
}
|
||||
SettingsAction.ClearAllData -> viewModelScope.launch { databaseRepo.clearAllData() }
|
||||
// Toggles
|
||||
@@ -184,9 +184,23 @@ class SettingsViewModel(
|
||||
}
|
||||
}
|
||||
|
||||
private fun runManualImport(importErrorMessage: String, block: suspend () -> Int) {
|
||||
viewModelScope.launch {
|
||||
try {
|
||||
_uiState.update { it.copy(dataSettings = it.dataSettings.copy(isUpdating = true)) }
|
||||
if (block() == 0) showToast(importErrorMessage)
|
||||
} catch (exception: Exception) {
|
||||
_uiState.update { it.copy(dataSettings = it.dataSettings.copy(isUpdating = false)) }
|
||||
println(exception)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// endregion
|
||||
|
||||
companion object {
|
||||
|
||||
fun factory(container: IMainContainer) = viewModelFactory {
|
||||
initializer {
|
||||
SettingsViewModel(
|
||||
|
||||
Reference in new issue
Block a user