mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-03 11:17:25 +00:00
feat: data source toggles + HTTP status codes (upstream #242)
Port upstream PR #242 data layer: per-source enabled toggles and HTTP status codes for custom data sources. - IRemoteSource: NetworkResult(code, stream) + getNetworkStream - RemoteSource: return HTTP status code (200 ok / error code / ERR) - ISettingsRepo: dataSourcesStatus StateFlow<Map<String,Int>> - SettingsRepo: persist enabled flags (single JSON per key) + status - DatabaseRepo: filter by enabled toggles, write back status codes - Settings.kt: DataSourcesSettings + satelliteEnabled/transceiversEnabled - Sync test fakes (AmSatRepositoryTest, DatabaseRepoTest, Fakes.kt) Fork-specific features preserved: builtinTypesByUrl reverse lookup, satnogs migration, map-type data source structure.
This commit is contained in:
1 parent
346803fe6e
commit
7f390117b8
9 files changed
+116
-23
No files matched your search
@@ -68,8 +68,13 @@ data class OtherSettings(
|
||||
|
||||
data class DataSourcesSettings(
|
||||
val satelliteUrls: List<String>,
|
||||
val transceiversUrls: List<String>
|
||||
)
|
||||
val transceiversUrls: List<String>,
|
||||
val satelliteEnabled: List<Boolean> = emptyList(),
|
||||
val transceiversEnabled: List<Boolean> = emptyList()
|
||||
) {
|
||||
fun isSatelliteEnabled(index: Int): Boolean = satelliteEnabled.getOrElse(index) { true }
|
||||
fun isTransceiverEnabled(index: Int): Boolean = transceiversEnabled.getOrElse(index) { true }
|
||||
}
|
||||
|
||||
data class RadioControlSettings(
|
||||
val enabled: Boolean,
|
||||
|
||||
+5
@@ -73,6 +73,11 @@ interface ISettingsRepo {
|
||||
fun updateDataSourcesSettings(settings: DataSourcesSettings)
|
||||
//endregion
|
||||
|
||||
//region # Data sources status
|
||||
val dataSourcesStatus: StateFlow<Map<String, Int>>
|
||||
fun updateDataSourcesStatus(status: Map<String, Int>)
|
||||
//endregion
|
||||
|
||||
//region # Radio control settings
|
||||
val radioControlSettings: StateFlow<RadioControlSettings>
|
||||
fun updateRadioControlSettings(settings: RadioControlSettings)
|
||||
|
||||
@@ -19,9 +19,17 @@ package com.rtbishop.look4sat.core.domain.source
|
||||
|
||||
import java.io.InputStream
|
||||
|
||||
/** Result of a network download: the HTTP status code and the response body stream. */
|
||||
data class NetworkResult(val code: Int, val stream: InputStream?) {
|
||||
companion object {
|
||||
/** Code used when a request fails before any HTTP response is received. */
|
||||
const val CONNECTION_ERROR = -1
|
||||
}
|
||||
}
|
||||
|
||||
interface IRemoteSource {
|
||||
suspend fun getFileStream(uri: String): InputStream?
|
||||
suspend fun getNetworkStream(url: String): InputStream?
|
||||
suspend fun getNetworkStream(url: String): NetworkResult
|
||||
suspend fun getAmSatCatalog(): String?
|
||||
suspend fun getAmSatReports(hours: Int, limit: Int): String?
|
||||
suspend fun submitAmSatReport(payloadJson: String): Pair<Int, String>?
|
||||
|
||||
Reference in new issue
Block a user