feat(amsat): 4.5.5 official AMSAT API + edge-to-edge status page
- Replace HTML parsing with the official AMSAT Satellite Status API v1 (catalog.php + reports.php, JSON): AmSatApiClient (pure JVM, hand rolled ISO-8601/epoch parsing for minSdk 24) + rewritten AmSatRepository (satellite list from catalog, reports slotted into 6 days x 12 two-hour slots, status colors per report value) - Fix edge-to-edge: status bar / navigation bar insets on the status page (refresh button and update time were unreachable) - Version 4.5.5 (455), What's new in all 5 locales
This commit is contained in:
1 parent
c9cab8457d
commit
6221516893
10 files changed
+227
-51
No files matched your search
+14
-2
@@ -15,6 +15,9 @@ import androidx.compose.foundation.layout.Spacer
|
||||
import androidx.compose.foundation.layout.fillMaxSize
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
import androidx.compose.foundation.layout.PaddingValues
|
||||
import androidx.compose.foundation.layout.navigationBarsPadding
|
||||
import androidx.compose.foundation.layout.statusBarsPadding
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.layout.size
|
||||
import androidx.compose.foundation.layout.width
|
||||
@@ -72,7 +75,13 @@ fun SatStatusScreen(container: IMainContainer) {
|
||||
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
|
||||
var selectedDay by remember { mutableStateOf<Pair<SatStatus, SatDay>?>(null) }
|
||||
|
||||
Column(modifier = Modifier.fillMaxSize().padding(horizontal = 8.dp)) {
|
||||
Column(
|
||||
modifier = Modifier
|
||||
.fillMaxSize()
|
||||
.statusBarsPadding()
|
||||
.navigationBarsPadding()
|
||||
.padding(horizontal = 8.dp)
|
||||
) {
|
||||
// Top: legend + refresh
|
||||
StatusHeader(
|
||||
fetchedAtUtcMs = uiState.fetchedAtUtcMs,
|
||||
@@ -100,7 +109,10 @@ fun SatStatusScreen(container: IMainContainer) {
|
||||
HeaderRow(statuses = uiState.statuses)
|
||||
HorizontalDivider(thickness = 1.dp)
|
||||
// Row
|
||||
LazyColumn(modifier = Modifier.fillMaxSize()) {
|
||||
LazyColumn(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
contentPadding = PaddingValues(bottom = 16.dp)
|
||||
) {
|
||||
items(uiState.statuses, key = { it.name }) { status ->
|
||||
StatusRow(
|
||||
status = status,
|
||||
|
||||
Reference in new issue
Block a user