b2015d1ef3
Assisted-by: Claude:claude-opus-5
45 lines
1.3 KiB
Kotlin
45 lines
1.3 KiB
Kotlin
package eu.kanade.presentation.components
|
|
|
|
import androidx.compose.runtime.Composable
|
|
import androidx.compose.runtime.remember
|
|
import androidx.compose.ui.platform.LocalContext
|
|
import eu.kanade.domain.ui.UiPreferences
|
|
import eu.kanade.tachiyomi.util.lang.toRelativeString
|
|
import kotlinx.datetime.LocalDate
|
|
import kotlinx.datetime.TimeZone
|
|
import kotlinx.datetime.toLocalDateTime
|
|
import mihon.app.di.appGraph
|
|
import tachiyomi.i18n.MR
|
|
import tachiyomi.presentation.core.i18n.stringResource
|
|
import kotlin.time.Instant
|
|
|
|
@Composable
|
|
fun relativeDateText(
|
|
dateEpochMillis: Long,
|
|
): String {
|
|
return relativeDateText(
|
|
localDate = Instant.fromEpochMilliseconds(dateEpochMillis)
|
|
.toLocalDateTime(TimeZone.currentSystemDefault())
|
|
.date
|
|
.takeIf { dateEpochMillis != 0L },
|
|
)
|
|
}
|
|
|
|
@Composable
|
|
fun relativeDateText(
|
|
localDate: LocalDate?,
|
|
): String {
|
|
val context = LocalContext.current
|
|
|
|
val preferences = remember { context.appGraph.uiPreferences }
|
|
val relativeTime = remember { preferences.relativeTime.get() }
|
|
val dateFormat = remember { UiPreferences.dateFormat(preferences.dateFormat.get()) }
|
|
|
|
return localDate?.toRelativeString(
|
|
context = context,
|
|
relative = relativeTime,
|
|
dateFormat = dateFormat,
|
|
)
|
|
?: stringResource(MR.strings.not_applicable)
|
|
}
|