Start migrating Anvil KSP to Metro

This commit is contained in:
Jorge Martín 2025-08-20 15:29:50 +02:00
parent d4d57b1e21
commit b76a71ebf5
703 changed files with 3523 additions and 2820 deletions

View file

@ -7,10 +7,10 @@
package io.element.android.libraries.dateformatter.impl
import com.squareup.anvil.annotations.ContributesBinding
import dev.zacsweers.metro.ContributesBinding
import io.element.android.libraries.core.extensions.safeCapitalize
import io.element.android.libraries.di.AppScope
import javax.inject.Inject
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
interface DateFormatterDay {
fun format(
@ -20,7 +20,8 @@ interface DateFormatterDay {
}
@ContributesBinding(AppScope::class)
class DefaultDateFormatterDay @Inject constructor(
@Inject
class DefaultDateFormatterDay(
private val localDateTimeProvider: LocalDateTimeProvider,
private val dateFormatters: DateFormatters,
) : DateFormatterDay {

View file

@ -8,9 +8,10 @@
package io.element.android.libraries.dateformatter.impl
import io.element.android.services.toolbox.api.strings.StringProvider
import javax.inject.Inject
import dev.zacsweers.metro.Inject
class DateFormatterFull @Inject constructor(
@Inject
class DateFormatterFull(
private val stringProvider: StringProvider,
private val localDateTimeProvider: LocalDateTimeProvider,
private val dateFormatters: DateFormatters,

View file

@ -9,9 +9,10 @@ package io.element.android.libraries.dateformatter.impl
import io.element.android.libraries.core.extensions.safeCapitalize
import io.element.android.services.toolbox.api.strings.StringProvider
import javax.inject.Inject
import dev.zacsweers.metro.Inject
class DateFormatterMonth @Inject constructor(
@Inject
class DateFormatterMonth(
private val stringProvider: StringProvider,
private val localDateTimeProvider: LocalDateTimeProvider,
private val dateFormatters: DateFormatters,

View file

@ -7,9 +7,10 @@
package io.element.android.libraries.dateformatter.impl
import javax.inject.Inject
import dev.zacsweers.metro.Inject
class DateFormatterTime @Inject constructor(
@Inject
class DateFormatterTime(
private val localDateTimeProvider: LocalDateTimeProvider,
private val dateFormatters: DateFormatters,
) {

View file

@ -7,9 +7,10 @@
package io.element.android.libraries.dateformatter.impl
import javax.inject.Inject
import dev.zacsweers.metro.Inject
class DateFormatterTimeOnly @Inject constructor(
@Inject
class DateFormatterTimeOnly(
private val localDateTimeProvider: LocalDateTimeProvider,
private val dateFormatters: DateFormatters,
) {

View file

@ -8,8 +8,8 @@
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 dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.SingleIn
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.toInstant
import kotlinx.datetime.toJavaLocalDate
@ -17,12 +17,13 @@ import kotlinx.datetime.toJavaLocalDateTime
import timber.log.Timber
import java.time.Period
import java.util.Locale
import javax.inject.Inject
import dev.zacsweers.metro.Inject
import kotlin.math.absoluteValue
import kotlin.time.Clock
@SingleIn(AppScope::class)
class DateFormatters @Inject constructor(
@Inject
class DateFormatters(
localeChangeObserver: LocaleChangeObserver,
private val clock: Clock,
private val timeZoneProvider: TimezoneProvider,

View file

@ -7,14 +7,15 @@
package io.element.android.libraries.dateformatter.impl
import com.squareup.anvil.annotations.ContributesBinding
import dev.zacsweers.metro.ContributesBinding
import io.element.android.libraries.dateformatter.api.DateFormatter
import io.element.android.libraries.dateformatter.api.DateFormatterMode
import io.element.android.libraries.di.AppScope
import javax.inject.Inject
import dev.zacsweers.metro.AppScope
import dev.zacsweers.metro.Inject
@ContributesBinding(AppScope::class)
class DefaultDateFormatter @Inject constructor(
@Inject
class DefaultDateFormatter(
private val dateFormatterFull: DateFormatterFull,
private val dateFormatterMonth: DateFormatterMonth,
private val dateFormatterDay: DateFormatterDay,

View file

@ -9,11 +9,12 @@ package io.element.android.libraries.dateformatter.impl
import kotlinx.datetime.LocalDateTime
import kotlinx.datetime.toLocalDateTime
import javax.inject.Inject
import dev.zacsweers.metro.Inject
import kotlin.time.Clock
import kotlin.time.Instant
class LocalDateTimeProvider @Inject constructor(
@Inject
class LocalDateTimeProvider(
private val clock: Clock,
private val timezoneProvider: TimezoneProvider,
) {

View file

@ -12,11 +12,11 @@ import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.os.Build
import com.squareup.anvil.annotations.ContributesBinding
import io.element.android.libraries.di.AppScope
import io.element.android.libraries.di.ApplicationContext
import io.element.android.libraries.di.SingleIn
import javax.inject.Inject
import dev.zacsweers.metro.ContributesBinding
import dev.zacsweers.metro.AppScope
import io.element.android.libraries.di.annotations.ApplicationContext
import dev.zacsweers.metro.SingleIn
import dev.zacsweers.metro.Inject
fun interface LocaleChangeObserver {
fun addListener(listener: LocaleChangeListener)
@ -28,7 +28,8 @@ interface LocaleChangeListener {
@SingleIn(AppScope::class)
@ContributesBinding(AppScope::class)
class DefaultLocaleChangeObserver @Inject constructor(
@Inject
class DefaultLocaleChangeObserver(
@ApplicationContext private val context: Context,
) : LocaleChangeObserver {
init {

View file

@ -7,16 +7,16 @@
package io.element.android.libraries.dateformatter.impl.di
import com.squareup.anvil.annotations.ContributesTo
import dagger.Module
import dagger.Provides
import dev.zacsweers.metro.BindingContainer
import dev.zacsweers.metro.ContributesTo
import dev.zacsweers.metro.Provides
import io.element.android.libraries.dateformatter.impl.TimezoneProvider
import io.element.android.libraries.di.AppScope
import dev.zacsweers.metro.AppScope
import kotlinx.datetime.TimeZone
import java.util.Locale
import kotlin.time.Clock
@Module
@BindingContainer
@ContributesTo(AppScope::class)
object DateFormatterModule {
@Provides