diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/BasicSingleApplePodsCardVH.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/BasicSingleApplePodsCardVH.kt index 10667491..984a5493 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/BasicSingleApplePodsCardVH.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/BasicSingleApplePodsCardVH.kt @@ -1,6 +1,5 @@ package eu.darken.capod.main.ui.overview.cards.pods -import android.icu.text.RelativeDateTimeFormatter import android.view.ViewGroup import androidx.core.view.isGone import eu.darken.capod.R @@ -8,7 +7,7 @@ import eu.darken.capod.common.lists.binding import eu.darken.capod.databinding.OverviewPodsAppleSingleBasicItemBinding import eu.darken.capod.pods.core.apple.BasicSingleApplePods import eu.darken.capod.pods.core.getBatteryLevelHeadset -import java.time.Duration +import eu.darken.capod.pods.core.lastSeenFormatted import java.time.Instant class BasicSingleApplePodsCardVH(parent: ViewGroup) : @@ -19,20 +18,13 @@ class BasicSingleApplePodsCardVH(parent: ViewGroup) : override val viewBinding = lazy { OverviewPodsAppleSingleBasicItemBinding.bind(itemView) } - private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance() - override val onBindData = binding(payload = true) { item: Item -> val device = item.device name.text = device.getLabel(context) deviceIcon.setImageResource(device.iconRes) - val duration = Duration.between(device.lastSeenAt, item.now) - lastSeen.text = lastSeenFormatter.format( - duration.seconds.toDouble(), - RelativeDateTimeFormatter.Direction.LAST, - RelativeDateTimeFormatter.RelativeUnit.SECONDS - ) + lastSeen.text = device.lastSeenFormatted(item.now) reception.text = device.getSignalQuality(context) diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/DualApplePodsCardVH.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/DualApplePodsCardVH.kt index 99b22808..8ea93365 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/DualApplePodsCardVH.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/DualApplePodsCardVH.kt @@ -1,6 +1,5 @@ package eu.darken.capod.main.ui.overview.cards.pods -import android.icu.text.RelativeDateTimeFormatter import android.view.ViewGroup import eu.darken.capod.R import eu.darken.capod.common.lists.binding @@ -12,7 +11,7 @@ import eu.darken.capod.pods.core.apple.DualApplePods.LidState import eu.darken.capod.pods.core.getBatteryLevelCase import eu.darken.capod.pods.core.getBatteryLevelLeftPod import eu.darken.capod.pods.core.getBatteryLevelRightPod -import java.time.Duration +import eu.darken.capod.pods.core.lastSeenFormatted import java.time.Instant class DualApplePodsCardVH(parent: ViewGroup) : @@ -23,8 +22,6 @@ class DualApplePodsCardVH(parent: ViewGroup) : override val viewBinding = lazy { OverviewPodsAppleDualItemBinding.bind(itemView) } - private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance() - override val onBindData = binding(payload = true) { item: Item -> val device = item.device name.apply { @@ -36,12 +33,7 @@ class DualApplePodsCardVH(parent: ViewGroup) : } deviceIcon.setImageResource(device.iconRes) - val duration = Duration.between(device.lastSeenAt, item.now) - lastSeen.text = lastSeenFormatter.format( - duration.seconds.toDouble(), - RelativeDateTimeFormatter.Direction.LAST, - RelativeDateTimeFormatter.RelativeUnit.SECONDS - ) + lastSeen.text = device.lastSeenFormatted(item.now) reception.text = device.getSignalQuality(context) diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/SingleApplePodsCardVH.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/SingleApplePodsCardVH.kt index 345a8efa..ab78a276 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/SingleApplePodsCardVH.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/SingleApplePodsCardVH.kt @@ -1,6 +1,5 @@ package eu.darken.capod.main.ui.overview.cards.pods -import android.icu.text.RelativeDateTimeFormatter import android.view.ViewGroup import androidx.core.view.isGone import eu.darken.capod.R @@ -8,7 +7,7 @@ import eu.darken.capod.common.lists.binding import eu.darken.capod.databinding.OverviewPodsAppleSingleItemBinding import eu.darken.capod.pods.core.apple.SingleApplePods import eu.darken.capod.pods.core.getBatteryLevelHeadset -import java.time.Duration +import eu.darken.capod.pods.core.lastSeenFormatted import java.time.Instant class SingleApplePodsCardVH(parent: ViewGroup) : @@ -19,20 +18,13 @@ class SingleApplePodsCardVH(parent: ViewGroup) : override val viewBinding = lazy { OverviewPodsAppleSingleItemBinding.bind(itemView) } - private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance() - override val onBindData = binding(payload = true) { item: Item -> val device = item.device name.text = device.getLabel(context) deviceIcon.setImageResource(device.iconRes) - val duration = Duration.between(device.lastSeenAt, item.now) - lastSeen.text = lastSeenFormatter.format( - duration.seconds.toDouble(), - RelativeDateTimeFormatter.Direction.LAST, - RelativeDateTimeFormatter.RelativeUnit.SECONDS - ) + lastSeen.text = device.lastSeenFormatted(item.now) reception.text = device.getSignalQuality(context) diff --git a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/UnknownPodDeviceCardVH.kt b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/UnknownPodDeviceCardVH.kt index 645c1c9c..10382eb4 100644 --- a/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/UnknownPodDeviceCardVH.kt +++ b/app/src/main/java/eu/darken/capod/main/ui/overview/cards/pods/UnknownPodDeviceCardVH.kt @@ -1,12 +1,11 @@ package eu.darken.capod.main.ui.overview.cards.pods -import android.icu.text.RelativeDateTimeFormatter import android.view.ViewGroup import eu.darken.capod.R import eu.darken.capod.common.lists.binding import eu.darken.capod.databinding.OverviewPodsUnknownItemBinding import eu.darken.capod.pods.core.PodDevice -import java.time.Duration +import eu.darken.capod.pods.core.lastSeenFormatted import java.time.Instant class UnknownPodDeviceCardVH(parent: ViewGroup) : @@ -19,18 +18,11 @@ class UnknownPodDeviceCardVH(parent: ViewGroup) : OverviewPodsUnknownItemBinding.bind(itemView) } - private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance() - override val onBindData = binding(payload = true) { item -> val device = item.device name.text = device.getLabel(context) - val duration = Duration.between(device.lastSeenAt, item.now) - lastSeen.text = lastSeenFormatter.format( - duration.seconds.toDouble(), - RelativeDateTimeFormatter.Direction.LAST, - RelativeDateTimeFormatter.RelativeUnit.SECONDS - ) + lastSeen.text = device.lastSeenFormatted(item.now) reception.text = device.getSignalQuality(context) diff --git a/app/src/main/java/eu/darken/capod/pods/core/PodDeviceExtensions.kt b/app/src/main/java/eu/darken/capod/pods/core/PodDeviceExtensions.kt index d352b128..07efb424 100644 --- a/app/src/main/java/eu/darken/capod/pods/core/PodDeviceExtensions.kt +++ b/app/src/main/java/eu/darken/capod/pods/core/PodDeviceExtensions.kt @@ -1,7 +1,10 @@ package eu.darken.capod.pods.core import android.content.Context +import android.icu.text.RelativeDateTimeFormatter import eu.darken.capod.R +import java.time.Duration +import java.time.Instant import kotlin.math.roundToInt fun HasDualPods.getBatteryLevelLeftPod(context: Context): String = @@ -19,3 +22,14 @@ fun HasCase.getBatteryLevelCase(context: Context): String = fun HasSinglePod.getBatteryLevelHeadset(context: Context): String = batteryHeadsetPercent?.let { "${(it * 100).roundToInt()}%" } ?: context.getString(R.string.general_value_not_available_label) + +private val lastSeenFormatter = RelativeDateTimeFormatter.getInstance() + +fun PodDevice.lastSeenFormatted(now: Instant): String { + val duration = Duration.between(lastSeenAt, now) + return lastSeenFormatter.format( + duration.seconds.toDouble(), + RelativeDateTimeFormatter.Direction.LAST, + RelativeDateTimeFormatter.RelativeUnit.SECONDS + ) +} \ No newline at end of file