From 3ff148f6d0ebdbef8880b3be87dc12fc064c9e79 Mon Sep 17 00:00:00 2001 From: Hy4ri Date: Tue, 16 Jun 2026 00:21:31 +0300 Subject: [PATCH] Fix CronJob model API compatibility and register BackHandler in SettingsScreen --- .../m57/hermescontrol/data/model/CronJob.kt | 21 +++++++++++++++++-- .../hermescontrol/ui/cron/CronJobsScreen.kt | 9 +++++--- .../ui/settings/SettingsScreen.kt | 3 +++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/m57/hermescontrol/data/model/CronJob.kt b/app/src/main/java/com/m57/hermescontrol/data/model/CronJob.kt index 23676ad9..1933b671 100644 --- a/app/src/main/java/com/m57/hermescontrol/data/model/CronJob.kt +++ b/app/src/main/java/com/m57/hermescontrol/data/model/CronJob.kt @@ -3,8 +3,25 @@ package com.m57.hermescontrol.data.model data class CronJob( val id: String, val name: String, - val schedule: String?, + val schedule: Any?, val state: String?, val last_run_status: String?, val next_run: String?, -) + val schedule_display: String? = null, + val last_status: String? = null, + val next_run_at: String? = null, +) { + val scheduleText: String + get() = + when (schedule) { + is String -> schedule + is Map<*, *> -> (schedule["display"] as? String) ?: schedule_display ?: "" + else -> schedule_display ?: "" + } + + val lastRunStatus: String + get() = last_run_status ?: last_status ?: "" + + val nextRunTime: String + get() = next_run ?: next_run_at ?: "" +} diff --git a/app/src/main/java/com/m57/hermescontrol/ui/cron/CronJobsScreen.kt b/app/src/main/java/com/m57/hermescontrol/ui/cron/CronJobsScreen.kt index eb16d81b..5b67c60f 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/cron/CronJobsScreen.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/cron/CronJobsScreen.kt @@ -108,14 +108,17 @@ fun CronJobsScreen( Column(modifier = Modifier.padding(16.dp)) { Text(text = job.name, style = MaterialTheme.typography.titleMedium) Spacer(modifier = Modifier.height(4.dp)) - Text(text = "Schedule: ${job.schedule}", style = MaterialTheme.typography.bodyMedium) + Text( + text = "Schedule: ${job.scheduleText}", + style = MaterialTheme.typography.bodyMedium, + ) Text(text = "Status: ${job.state}", style = MaterialTheme.typography.bodyMedium) Text( - text = "Last Run: ${job.last_run_status ?: "Never"}", + text = "Last Run: ${job.lastRunStatus.ifBlank { "Never" }}", style = MaterialTheme.typography.bodyMedium, ) Text( - text = "Next Run: ${job.next_run ?: "N/A"}", + text = "Next Run: ${job.nextRunTime.ifBlank { "N/A" }}", style = MaterialTheme.typography.bodyMedium, ) diff --git a/app/src/main/java/com/m57/hermescontrol/ui/settings/SettingsScreen.kt b/app/src/main/java/com/m57/hermescontrol/ui/settings/SettingsScreen.kt index c346fe8d..c8f225fe 100644 --- a/app/src/main/java/com/m57/hermescontrol/ui/settings/SettingsScreen.kt +++ b/app/src/main/java/com/m57/hermescontrol/ui/settings/SettingsScreen.kt @@ -1,5 +1,6 @@ package com.m57.hermescontrol.ui.settings +import androidx.activity.compose.BackHandler import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut @@ -66,6 +67,8 @@ fun SettingsScreen( val state by viewModel.uiState.collectAsStateWithLifecycle() var passwordVisible by remember { mutableStateOf(false) } + BackHandler(onBack = onBack) + Scaffold( modifier = modifier.fillMaxSize(), topBar = {