diff --git a/app-common/src/main/java/eu/darken/capod/pods/core/apple/ApplePodsFactory.kt b/app-common/src/main/java/eu/darken/capod/pods/core/apple/ApplePodsFactory.kt index 5eedcb60..eba9dd9b 100644 --- a/app-common/src/main/java/eu/darken/capod/pods/core/apple/ApplePodsFactory.kt +++ b/app-common/src/main/java/eu/darken/capod/pods/core/apple/ApplePodsFactory.kt @@ -8,7 +8,6 @@ import eu.darken.capod.common.lowerNibble import eu.darken.capod.common.upperNibble import eu.darken.capod.pods.core.HasCase import eu.darken.capod.pods.core.PodDevice -import eu.darken.capod.pods.core.apple.airpods.AirPodsPro import eu.darken.capod.pods.core.apple.protocol.ProximityPairing import java.time.Duration import java.time.Instant @@ -80,13 +79,19 @@ abstract class ApplePodsFactory(private val tag: String) { .lastOrNull() fun KnownDevice.getLatestCaseLidState(basic: DualApplePods): DualApplePods.LidState? { - val definitive = setOf(DualApplePods.LidState.OPEN, DualApplePods.LidState.CLOSED) - if (definitive.contains(basic.caseLidState)) return null + val definitive = setOf( + DualApplePods.LidState.OPEN, + DualApplePods.LidState.CLOSED, + DualApplePods.LidState.NOT_IN_CASE, + ) + if (definitive.contains(basic.caseLidState)) return basic.caseLidState return history - .filterIsInstance() // TODO why is this AirPodsPro specific here? - .lastOrNull { it.caseLidState != DualApplePods.LidState.NOT_IN_CASE } + .takeLast(2) + .filterIsInstance() + .lastOrNull { it.caseLidState != DualApplePods.LidState.UNKNOWN } ?.caseLidState + ?: DualApplePods.LidState.NOT_IN_CASE } open fun historyTrimmer(