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 tachiyomi.i18n.MR import tachiyomi.presentation.core.i18n.stringResource import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get 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 { Injekt.get() } 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) }