diff --git a/composeApp/src/commonMain/kotlin/de/kitshn/Utils.kt b/composeApp/src/commonMain/kotlin/de/kitshn/Utils.kt index 9a3282d0..c0e6d9f2 100644 --- a/composeApp/src/commonMain/kotlin/de/kitshn/Utils.kt +++ b/composeApp/src/commonMain/kotlin/de/kitshn/Utils.kt @@ -34,15 +34,16 @@ import kitshn.composeapp.generated.resources.common_tomorrow import kitshn.composeapp.generated.resources.common_yesterday import kotlinx.collections.immutable.toImmutableList import kotlinx.coroutines.delay -import kotlinx.datetime.Instant import kotlinx.datetime.LocalDate import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone -import kotlinx.datetime.atStartOfDayIn -import kotlinx.datetime.format +import kotlinx.datetime.atTime +import kotlinx.datetime.daysUntil import kotlinx.datetime.format.FormatStringsInDatetimeFormats import kotlinx.datetime.format.byUnicodePattern +import kotlinx.datetime.toInstant import kotlinx.datetime.toLocalDateTime +import kotlinx.datetime.todayIn import kotlinx.serialization.InternalSerializationApi import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonObject @@ -53,6 +54,7 @@ import org.jetbrains.compose.resources.stringResource import kotlin.math.floor import kotlin.time.Clock import kotlin.time.ExperimentalTime +import kotlin.time.Instant enum class FileFormats(val extensions: List, val mimeType: String) { EPUB(listOf("epub"), "application/epub+zip"), @@ -300,9 +302,9 @@ fun String.parseIsoTime(): LocalDateTime { } fun LocalDate.toStartOfDayString(): String { - return this.atStartOfDayIn(TimeZone.currentSystemDefault()) - .toLocalDateTime(TimeZone.UTC) - .format(LocalDateTime.Formats.ISO) + "Z" + return this.atTime(0,0,0) + .toInstant(TimeZone.UTC) + .toString() } fun Long.toLocalDate( @@ -317,26 +319,23 @@ expect fun LocalDate.format(pattern: String): String @Composable fun LocalDate.toHumanReadableDateLabel(): String { - val today = Clock.System.now().toLocalDateTime(TimeZone.currentSystemDefault()).date - val diff = this.toEpochDays() - today.toEpochDays() - - var label = when(diff) { - 2L -> stringResource(Res.string.common_day_after_tomorrow) - 1L -> stringResource(Res.string.common_tomorrow) - 0L -> stringResource(Res.string.common_today) - -1L -> stringResource(Res.string.common_yesterday) - -2L -> stringResource(Res.string.common_day_before_yesterday) + val today = Clock.System.todayIn(TimeZone.currentSystemDefault()) + val diff = today.daysUntil(this) + + val label = when(diff) { + 2 -> stringResource(Res.string.common_day_after_tomorrow) + 1 -> stringResource(Res.string.common_tomorrow) + 0 -> stringResource(Res.string.common_today) + -1 -> stringResource(Res.string.common_yesterday) + -2 -> stringResource(Res.string.common_day_before_yesterday) else -> { null } } - if(label == "null") label = null - return label ?: if(diff in 0L..6L) { - this.format("EEEE") - }else if(this.year == today.year) { - this.format("EE, dd. MMM") - } else { - this.format("dd. MMMM yyyy") + return label ?: when { + diff in 0..6 -> this.format("EEEE") + this.year == today.year -> this.format("EE, dd. MMM") + else -> this.format("dd. MMMM yyyy") } } diff --git a/composeApp/src/commonMain/kotlin/de/kitshn/ui/view/settings/SettingsBehavior.kt b/composeApp/src/commonMain/kotlin/de/kitshn/ui/view/settings/SettingsBehavior.kt index eaa8e6d5..599472df 100644 --- a/composeApp/src/commonMain/kotlin/de/kitshn/ui/view/settings/SettingsBehavior.kt +++ b/composeApp/src/commonMain/kotlin/de/kitshn/ui/view/settings/SettingsBehavior.kt @@ -61,7 +61,6 @@ import kitshn.composeapp.generated.resources.settings_section_behavior_propertie import kitshn.composeapp.generated.resources.settings_section_behavior_use_share_wrapper_description import kitshn.composeapp.generated.resources.settings_section_behavior_use_share_wrapper_label import kotlinx.coroutines.launch -import kotlinx.datetime.Instant import kotlinx.datetime.LocalDateTime import kotlinx.datetime.TimeZone import kotlinx.datetime.toInstant @@ -69,6 +68,7 @@ import kotlinx.datetime.toLocalDateTime import org.jetbrains.compose.resources.stringResource import kotlin.time.Clock import kotlin.time.ExperimentalTime +import kotlin.time.Instant @OptIn(ExperimentalMaterial3Api::class) @Composable