fix(system,kanban): make doctor optional and render dynamic kanban columns

This commit is contained in:
M57 committed 2026-06-16 10:13:11 +03:00
1 parent a994c7d5db
commit 4c572509ec
3 files changed
+55 -52

No files matched your search

@@ -33,26 +33,21 @@ class SystemViewModel : ViewModel() {
withContext(Dispatchers.IO) {
ApiClient.hermesApi.getSystemStats()
}
val doctorResponse =
withContext(Dispatchers.IO) {
ApiClient.hermesApi.runDoctor()
}
if (statsResponse.isSuccessful && doctorResponse.isSuccessful) {
if (statsResponse.isSuccessful) {
_uiState.update {
it.copy(
isLoading = false,
stats = statsResponse.body(),
doctorReport = doctorResponse.body(),
)
}
// Doctor is optional; many servers do not expose it.
loadDoctorReport()
} else {
_uiState.update {
it.copy(
isLoading = false,
errorMessage =
"Failed to load system data: HTTP " +
"${statsResponse.code()} / ${doctorResponse.code()}",
errorMessage = "Failed to load system stats: HTTP ${statsResponse.code()}",
)
}
}
@@ -60,13 +55,29 @@ class SystemViewModel : ViewModel() {
_uiState.update {
it.copy(
isLoading = false,
errorMessage = "Failed to load system data: ${e.message}",
errorMessage = "Failed to load system stats: ${e.message}",
)
}
}
}
}
private fun loadDoctorReport() {
viewModelScope.launch {
try {
val doctorResponse =
withContext(Dispatchers.IO) {
ApiClient.hermesApi.runDoctor()
}
if (doctorResponse.isSuccessful) {
_uiState.update { it.copy(doctorReport = doctorResponse.body()) }
}
} catch (_: Exception) {
// Ignore optional doctor failures.
}
}
}
fun triggerBackup() {
viewModelScope.launch {
try {