Fix deprecation and add OptIn on Clock and Instant

This commit is contained in:
Benoit Marty 2025-07-02 12:29:17 +02:00
parent d478077487
commit ec182bf8a0
10 changed files with 33 additions and 13 deletions

View file

@ -10,7 +10,6 @@ package io.element.android.libraries.dateformatter.impl
import android.text.format.DateUtils import android.text.format.DateUtils
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
import io.element.android.libraries.di.SingleIn import io.element.android.libraries.di.SingleIn
import kotlinx.datetime.Clock
import kotlinx.datetime.LocalDateTime import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.toInstant import kotlinx.datetime.toInstant
import kotlinx.datetime.toJavaLocalDate import kotlinx.datetime.toJavaLocalDate
@ -20,8 +19,10 @@ import java.time.Period
import java.util.Locale import java.util.Locale
import javax.inject.Inject import javax.inject.Inject
import kotlin.math.absoluteValue import kotlin.math.absoluteValue
import kotlin.time.Clock
import kotlin.time.ExperimentalTime import kotlin.time.ExperimentalTime
@OptIn(ExperimentalTime::class)
@SingleIn(AppScope::class) @SingleIn(AppScope::class)
class DateFormatters @Inject constructor( class DateFormatters @Inject constructor(
localeChangeObserver: LocaleChangeObserver, localeChangeObserver: LocaleChangeObserver,

View file

@ -7,12 +7,14 @@
package io.element.android.libraries.dateformatter.impl package io.element.android.libraries.dateformatter.impl
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDateTime import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.toLocalDateTime import kotlinx.datetime.toLocalDateTime
import javax.inject.Inject import javax.inject.Inject
import kotlin.time.Clock
import kotlin.time.ExperimentalTime
import kotlin.time.Instant
@OptIn(ExperimentalTime::class)
class LocalDateTimeProvider @Inject constructor( class LocalDateTimeProvider @Inject constructor(
private val clock: Clock, private val clock: Clock,
private val timezoneProvider: TimezoneProvider, private val timezoneProvider: TimezoneProvider,

View file

@ -12,10 +12,12 @@ import dagger.Module
import dagger.Provides import dagger.Provides
import io.element.android.libraries.dateformatter.impl.TimezoneProvider import io.element.android.libraries.dateformatter.impl.TimezoneProvider
import io.element.android.libraries.di.AppScope import io.element.android.libraries.di.AppScope
import kotlinx.datetime.Clock
import kotlinx.datetime.TimeZone import kotlinx.datetime.TimeZone
import java.util.Locale import java.util.Locale
import kotlin.time.Clock
import kotlin.time.ExperimentalTime
@OptIn(ExperimentalTime::class)
@Module @Module
@ContributesTo(AppScope::class) @ContributesTo(AppScope::class)
object DateFormatterModule { object DateFormatterModule {

View file

@ -5,6 +5,8 @@
* Please see LICENSE files in the repository root for full details. * Please see LICENSE files in the repository root for full details.
*/ */
@file:OptIn(ExperimentalTime::class)
package io.element.android.libraries.dateformatter.impl.previews package io.element.android.libraries.dateformatter.impl.previews
import androidx.compose.foundation.layout.Column 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.preview.ElementPreview
import io.element.android.libraries.designsystem.theme.components.Text import io.element.android.libraries.designsystem.theme.components.Text
import io.element.android.libraries.designsystem.utils.allBooleans import io.element.android.libraries.designsystem.utils.allBooleans
import kotlinx.datetime.Instant import kotlin.time.ExperimentalTime
import kotlin.time.Instant
@Preview @Preview
@Composable @Composable

View file

@ -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.DefaultDateFormatter
import io.element.android.libraries.dateformatter.impl.DefaultDateFormatterDay import io.element.android.libraries.dateformatter.impl.DefaultDateFormatterDay
import io.element.android.libraries.dateformatter.impl.LocalDateTimeProvider import io.element.android.libraries.dateformatter.impl.LocalDateTimeProvider
import kotlinx.datetime.Instant
import kotlinx.datetime.TimeZone import kotlinx.datetime.TimeZone
import java.util.Locale import java.util.Locale
import kotlin.time.ExperimentalTime
import kotlin.time.Instant
/** /**
* Create DefaultDateFormatter and set current time to the provided date. * Create DefaultDateFormatter and set current time to the provided date.
*/ */
@OptIn(ExperimentalTime::class)
fun createFormatter( fun createFormatter(
context: Context, context: Context,
currentDate: String, currentDate: String,

View file

@ -7,9 +7,11 @@
package io.element.android.libraries.dateformatter.impl.previews package io.element.android.libraries.dateformatter.impl.previews
import kotlinx.datetime.Clock import kotlin.time.Clock
import kotlinx.datetime.Instant import kotlin.time.ExperimentalTime
import kotlin.time.Instant
@OptIn(ExperimentalTime::class)
class PreviewClock : Clock { class PreviewClock : Clock {
private var instant: Instant = Instant.fromEpochMilliseconds(0) private var instant: Instant = Instant.fromEpochMilliseconds(0)

View file

@ -11,11 +11,13 @@ import android.os.Build
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.dateformatter.api.DateFormatterMode import io.element.android.libraries.dateformatter.api.DateFormatterMode
import kotlinx.datetime.Instant
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
import kotlin.time.ExperimentalTime
import kotlin.time.Instant
@OptIn(ExperimentalTime::class)
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
@Config(qualifiers = "fr", sdk = [Build.VERSION_CODES.TIRAMISU]) @Config(qualifiers = "fr", sdk = [Build.VERSION_CODES.TIRAMISU])
class DefaultDateFormatterFrTest { class DefaultDateFormatterFrTest {

View file

@ -11,11 +11,13 @@ import android.os.Build
import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.ext.junit.runners.AndroidJUnit4
import com.google.common.truth.Truth.assertThat import com.google.common.truth.Truth.assertThat
import io.element.android.libraries.dateformatter.api.DateFormatterMode import io.element.android.libraries.dateformatter.api.DateFormatterMode
import kotlinx.datetime.Instant
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.robolectric.annotation.Config import org.robolectric.annotation.Config
import kotlin.time.ExperimentalTime
import kotlin.time.Instant
@OptIn(ExperimentalTime::class)
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
@Config(qualifiers = "en", sdk = [Build.VERSION_CODES.TIRAMISU]) @Config(qualifiers = "en", sdk = [Build.VERSION_CODES.TIRAMISU])
class DefaultDateFormatterTest { class DefaultDateFormatterTest {

View file

@ -8,13 +8,15 @@
package io.element.android.libraries.dateformatter.impl package io.element.android.libraries.dateformatter.impl
import io.element.android.tests.testutils.InstrumentationStringProvider import io.element.android.tests.testutils.InstrumentationStringProvider
import kotlinx.datetime.Instant
import kotlinx.datetime.TimeZone import kotlinx.datetime.TimeZone
import java.util.Locale import java.util.Locale
import kotlin.time.ExperimentalTime
import kotlin.time.Instant
/** /**
* Create DefaultDateFormatter and set current time to the provided date. * Create DefaultDateFormatter and set current time to the provided date.
*/ */
@OptIn(ExperimentalTime::class)
fun createFormatter(currentDate: String): DefaultDateFormatter { fun createFormatter(currentDate: String): DefaultDateFormatter {
val clock = FakeClock().apply { givenInstant(Instant.parse(currentDate)) } val clock = FakeClock().apply { givenInstant(Instant.parse(currentDate)) }
val localDateTimeProvider = LocalDateTimeProvider(clock) { TimeZone.UTC } val localDateTimeProvider = LocalDateTimeProvider(clock) { TimeZone.UTC }

View file

@ -7,9 +7,11 @@
package io.element.android.libraries.dateformatter.impl package io.element.android.libraries.dateformatter.impl
import kotlinx.datetime.Clock import kotlin.time.Clock
import kotlinx.datetime.Instant import kotlin.time.ExperimentalTime
import kotlin.time.Instant
@OptIn(ExperimentalTime::class)
class FakeClock : Clock { class FakeClock : Clock {
private var instant: Instant = Instant.fromEpochMilliseconds(0) private var instant: Instant = Instant.fromEpochMilliseconds(0)