12345678910111213141516171819202122232425262728293031323334353637383940 |
- package eu.kanade.presentation.util
- import android.content.Context
- import android.text.format.DateUtils
- import androidx.compose.runtime.Composable
- import androidx.compose.runtime.ReadOnlyComposable
- import tachiyomi.core.i18n.stringResource
- import tachiyomi.i18n.MR
- import tachiyomi.presentation.core.i18n.stringResource
- import java.util.Date
- import kotlin.time.Duration
- import kotlin.time.Duration.Companion.minutes
- fun Duration.toDurationString(context: Context, fallback: String): String {
- return toComponents { days, hours, minutes, seconds, _ ->
- buildList(4) {
- if (days != 0L) add(context.stringResource(MR.strings.day_short, days))
- if (hours != 0) add(context.stringResource(MR.strings.hour_short, hours))
- if (minutes != 0 && (days == 0L || hours == 0)) {
- add(
- context.stringResource(MR.strings.minute_short, minutes),
- )
- }
- if (seconds != 0 && days == 0L && hours == 0) add(context.stringResource(MR.strings.seconds_short, seconds))
- }.joinToString(" ").ifBlank { fallback }
- }
- }
- @Composable
- @ReadOnlyComposable
- fun relativeTimeSpanString(epochMillis: Long): String {
- val now = Date().time
- return when {
- epochMillis <= 0L -> stringResource(MR.strings.relative_time_span_never)
- now - epochMillis < 1.minutes.inWholeMilliseconds -> stringResource(
- MR.strings.updates_last_update_info_just_now,
- )
- else -> DateUtils.getRelativeTimeSpanString(epochMillis, now, DateUtils.MINUTE_IN_MILLIS).toString()
- }
- }
|