From ec182bf8a05506ff0b1f4037c179fd9f0c40dbe8 Mon Sep 17 00:00:00 2001 From: Benoit Marty Date: Wed, 2 Jul 2025 12:29:17 +0200 Subject: [PATCH] Fix deprecation and add OptIn on Clock and Instant --- .../android/libraries/dateformatter/impl/DateFormatters.kt | 3 ++- .../libraries/dateformatter/impl/LocalDateTimeProvider.kt | 6 ++++-- .../libraries/dateformatter/impl/di/DateFormatterModule.kt | 4 +++- .../impl/previews/DateFormatterModeViewPreview.kt | 5 ++++- .../libraries/dateformatter/impl/previews/Factory.kt | 4 +++- .../libraries/dateformatter/impl/previews/PreviewClock.kt | 6 ++++-- .../dateformatter/impl/DefaultDateFormatterFrTest.kt | 4 +++- .../dateformatter/impl/DefaultDateFormatterTest.kt | 4 +++- .../element/android/libraries/dateformatter/impl/Factory.kt | 4 +++- .../android/libraries/dateformatter/impl/FakeClock.kt | 6 ++++-- 10 files changed, 33 insertions(+), 13 deletions(-) diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt index 3728749317..91ce539cee 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/DateFormatters.kt @@ -10,7 +10,6 @@ package io.element.android.libraries.dateformatter.impl import android.text.format.DateUtils import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.SingleIn -import kotlinx.datetime.Clock import kotlinx.datetime.LocalDateTime import kotlinx.datetime.toInstant import kotlinx.datetime.toJavaLocalDate @@ -20,8 +19,10 @@ import java.time.Period import java.util.Locale import javax.inject.Inject import kotlin.math.absoluteValue +import kotlin.time.Clock import kotlin.time.ExperimentalTime +@OptIn(ExperimentalTime::class) @SingleIn(AppScope::class) class DateFormatters @Inject constructor( localeChangeObserver: LocaleChangeObserver, diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt index c2cd062082..175da2ef9c 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/LocalDateTimeProvider.kt @@ -7,12 +7,14 @@ package io.element.android.libraries.dateformatter.impl -import kotlinx.datetime.Clock -import kotlinx.datetime.Instant import kotlinx.datetime.LocalDateTime import kotlinx.datetime.toLocalDateTime import javax.inject.Inject +import kotlin.time.Clock +import kotlin.time.ExperimentalTime +import kotlin.time.Instant +@OptIn(ExperimentalTime::class) class LocalDateTimeProvider @Inject constructor( private val clock: Clock, private val timezoneProvider: TimezoneProvider, diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt index 1fe22483a4..8decb527e2 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/di/DateFormatterModule.kt @@ -12,10 +12,12 @@ import dagger.Module import dagger.Provides import io.element.android.libraries.dateformatter.impl.TimezoneProvider import io.element.android.libraries.di.AppScope -import kotlinx.datetime.Clock import kotlinx.datetime.TimeZone import java.util.Locale +import kotlin.time.Clock +import kotlin.time.ExperimentalTime +@OptIn(ExperimentalTime::class) @Module @ContributesTo(AppScope::class) object DateFormatterModule { diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/DateFormatterModeViewPreview.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/DateFormatterModeViewPreview.kt index b88badcc98..8b34e51e3f 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/DateFormatterModeViewPreview.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/DateFormatterModeViewPreview.kt @@ -5,6 +5,8 @@ * Please see LICENSE files in the repository root for full details. */ +@file:OptIn(ExperimentalTime::class) + package io.element.android.libraries.dateformatter.impl.previews import androidx.compose.foundation.layout.Column @@ -28,7 +30,8 @@ import io.element.android.libraries.dateformatter.impl.DefaultDateFormatter import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.utils.allBooleans -import kotlinx.datetime.Instant +import kotlin.time.ExperimentalTime +import kotlin.time.Instant @Preview @Composable diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/Factory.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/Factory.kt index 88afcb554f..23f3d8733a 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/Factory.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/Factory.kt @@ -16,13 +16,15 @@ import io.element.android.libraries.dateformatter.impl.DateFormatters import io.element.android.libraries.dateformatter.impl.DefaultDateFormatter import io.element.android.libraries.dateformatter.impl.DefaultDateFormatterDay import io.element.android.libraries.dateformatter.impl.LocalDateTimeProvider -import kotlinx.datetime.Instant import kotlinx.datetime.TimeZone import java.util.Locale +import kotlin.time.ExperimentalTime +import kotlin.time.Instant /** * Create DefaultDateFormatter and set current time to the provided date. */ +@OptIn(ExperimentalTime::class) fun createFormatter( context: Context, currentDate: String, diff --git a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/PreviewClock.kt b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/PreviewClock.kt index a86fb04455..5b9c26287e 100644 --- a/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/PreviewClock.kt +++ b/libraries/dateformatter/impl/src/main/kotlin/io/element/android/libraries/dateformatter/impl/previews/PreviewClock.kt @@ -7,9 +7,11 @@ package io.element.android.libraries.dateformatter.impl.previews -import kotlinx.datetime.Clock -import kotlinx.datetime.Instant +import kotlin.time.Clock +import kotlin.time.ExperimentalTime +import kotlin.time.Instant +@OptIn(ExperimentalTime::class) class PreviewClock : Clock { private var instant: Instant = Instant.fromEpochMilliseconds(0) diff --git a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatterFrTest.kt b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatterFrTest.kt index 7300b0d4ef..4955dadcaf 100644 --- a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatterFrTest.kt +++ b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatterFrTest.kt @@ -11,11 +11,13 @@ import android.os.Build import androidx.test.ext.junit.runners.AndroidJUnit4 import com.google.common.truth.Truth.assertThat import io.element.android.libraries.dateformatter.api.DateFormatterMode -import kotlinx.datetime.Instant import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config +import kotlin.time.ExperimentalTime +import kotlin.time.Instant +@OptIn(ExperimentalTime::class) @RunWith(AndroidJUnit4::class) @Config(qualifiers = "fr", sdk = [Build.VERSION_CODES.TIRAMISU]) class DefaultDateFormatterFrTest { diff --git a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatterTest.kt b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatterTest.kt index 25cda55654..c059675907 100644 --- a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatterTest.kt +++ b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/DefaultDateFormatterTest.kt @@ -11,11 +11,13 @@ import android.os.Build import androidx.test.ext.junit.runners.AndroidJUnit4 import com.google.common.truth.Truth.assertThat import io.element.android.libraries.dateformatter.api.DateFormatterMode -import kotlinx.datetime.Instant import org.junit.Test import org.junit.runner.RunWith import org.robolectric.annotation.Config +import kotlin.time.ExperimentalTime +import kotlin.time.Instant +@OptIn(ExperimentalTime::class) @RunWith(AndroidJUnit4::class) @Config(qualifiers = "en", sdk = [Build.VERSION_CODES.TIRAMISU]) class DefaultDateFormatterTest { diff --git a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/Factory.kt b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/Factory.kt index 6ab588022d..d3fd71a4b4 100644 --- a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/Factory.kt +++ b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/Factory.kt @@ -8,13 +8,15 @@ package io.element.android.libraries.dateformatter.impl import io.element.android.tests.testutils.InstrumentationStringProvider -import kotlinx.datetime.Instant import kotlinx.datetime.TimeZone import java.util.Locale +import kotlin.time.ExperimentalTime +import kotlin.time.Instant /** * Create DefaultDateFormatter and set current time to the provided date. */ +@OptIn(ExperimentalTime::class) fun createFormatter(currentDate: String): DefaultDateFormatter { val clock = FakeClock().apply { givenInstant(Instant.parse(currentDate)) } val localDateTimeProvider = LocalDateTimeProvider(clock) { TimeZone.UTC } diff --git a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/FakeClock.kt b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/FakeClock.kt index 047e87e62a..fb26bda5bb 100644 --- a/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/FakeClock.kt +++ b/libraries/dateformatter/impl/src/test/kotlin/io/element/android/libraries/dateformatter/impl/FakeClock.kt @@ -7,9 +7,11 @@ package io.element.android.libraries.dateformatter.impl -import kotlinx.datetime.Clock -import kotlinx.datetime.Instant +import kotlin.time.Clock +import kotlin.time.ExperimentalTime +import kotlin.time.Instant +@OptIn(ExperimentalTime::class) class FakeClock : Clock { private var instant: Instant = Instant.fromEpochMilliseconds(0)