diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/DualPodsCard.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/DualPodsCard.kt index 1038e92c..1ddfe2d1 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/DualPodsCard.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/DualPodsCard.kt @@ -95,7 +95,7 @@ fun DualPodsCard( Column(modifier = Modifier.weight(1f)) { Text( - text = device.meta?.profile?.label ?: "?", + text = device.label ?: "?", style = MaterialTheme.typography.titleMedium, maxLines = 1, overflow = TextOverflow.Ellipsis, diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/SinglePodsCard.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/SinglePodsCard.kt index faba3ffb..6cd9fddd 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/SinglePodsCard.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/SinglePodsCard.kt @@ -103,7 +103,7 @@ fun SinglePodsCard( Column(modifier = Modifier.weight(1f)) { Text( - text = device.meta?.profile?.label ?: "?", + text = device.label ?: "?", style = MaterialTheme.typography.titleMedium, maxLines = 1, overflow = TextOverflow.Ellipsis, diff --git a/app/src/main/java/eu/darken/capod/monitor/core/DeviceMonitor.kt b/app/src/main/java/eu/darken/capod/monitor/core/DeviceMonitor.kt index 919a9654..d35caa69 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/DeviceMonitor.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/DeviceMonitor.kt @@ -33,12 +33,13 @@ class DeviceMonitor @Inject constructor( // Live devices — BLE + AAP + cached fallback for missing fields val liveDevices = pods.map { pod -> val bondedAddress = pod.meta?.profile?.address - val profileId = pod.meta?.profile?.id + val profile = pod.meta?.profile PodDevice( - profileId = profileId, + profileId = profile?.id, + label = profile?.label, ble = pod, aap = bondedAddress?.let { aapStates[it] }, - cached = profileId?.let { cachedStates[it] }, + cached = profile?.id?.let { cachedStates[it] }, ) } @@ -48,7 +49,7 @@ class DeviceMonitor @Inject constructor( .filter { it.id !in liveProfileIds } .mapNotNull { profile -> cachedStates[profile.id]?.let { - PodDevice(profileId = profile.id, ble = null, aap = null, cached = it) + PodDevice(profileId = profile.id, label = profile.label, ble = null, aap = null, cached = it) } } @@ -67,7 +68,8 @@ class DeviceMonitor @Inject constructor( val cached = deviceStateCache.load(profileId) if (cached != null) { log(TAG) { "Found cached state for profile $profileId" } - return PodDevice(profileId = profileId, ble = null, aap = null, cached = cached) + val profileLabel = profilesRepo.profiles.firstOrNull()?.firstOrNull { it.id == profileId }?.label + return PodDevice(profileId = profileId, label = profileLabel, ble = null, aap = null, cached = cached) } log(TAG) { "No device found for profile $profileId" } diff --git a/app/src/main/java/eu/darken/capod/monitor/core/PodDevice.kt b/app/src/main/java/eu/darken/capod/monitor/core/PodDevice.kt index 74ea4294..b6e4cd53 100644 --- a/app/src/main/java/eu/darken/capod/monitor/core/PodDevice.kt +++ b/app/src/main/java/eu/darken/capod/monitor/core/PodDevice.kt @@ -29,6 +29,7 @@ import java.time.Instant @Stable data class PodDevice( val profileId: String?, + val label: String? = null, internal val ble: BlePodSnapshot?, internal val aap: AapPodState?, internal val cached: CachedDeviceState? = null,