Refactor use of Java.util.date to Java.time.*, to fix localized date issues. (#402)

* Add support for localdate based relative times

* Update History Screen to use new localdate based relative times

* Update Updates Screen to use new localdate based relative times

* Cleaned up date util classes

* Updated build time display

* Code cleanup

* Fixed crash in settings

* Updated Preferences item

* Worker Info works

* Fixed Tracker date display

* Code changes to pass detekt
This commit is contained in:
Maddie Witman
2024-02-16 06:09:00 -05:00
committed by GitHub
parent 96c236e5c3
commit 7ff95e21ba
13 changed files with 89 additions and 100 deletions

View File

@@ -5,7 +5,7 @@ import cafe.adriel.voyager.core.model.StateScreenModel
import cafe.adriel.voyager.core.model.screenModelScope
import eu.kanade.core.util.insertSeparators
import eu.kanade.presentation.history.HistoryUiModel
import eu.kanade.tachiyomi.util.lang.toDateKey
import eu.kanade.tachiyomi.util.lang.toLocalDate
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.flow.Flow
@@ -28,7 +28,7 @@ import tachiyomi.domain.history.interactor.RemoveHistory
import tachiyomi.domain.history.model.HistoryWithRelations
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.util.Date
import java.time.LocalDate
class HistoryScreenModel(
private val getHistory: GetHistory = Injekt.get(),
@@ -60,10 +60,12 @@ class HistoryScreenModel(
private fun List<HistoryWithRelations>.toHistoryUiModels(): List<HistoryUiModel> {
return map { HistoryUiModel.Item(it) }
.insertSeparators { before, after ->
val beforeDate = before?.item?.readAt?.time?.toDateKey() ?: Date(0)
val afterDate = after?.item?.readAt?.time?.toDateKey() ?: Date(0)
val beforeDate = before?.item?.readAt?.time?.toLocalDate() ?: LocalDate.MIN
val afterDate = after?.item?.readAt?.time?.toLocalDate() ?: LocalDate.MIN
when {
beforeDate.time != afterDate.time && afterDate.time != 0L -> HistoryUiModel.Header(afterDate)
beforeDate.isAfter(afterDate)
or afterDate.equals(LocalDate.MIN)
or beforeDate.equals(LocalDate.MIN) -> HistoryUiModel.Header(afterDate)
// Return null to avoid adding a separator between two items.
else -> null
}

View File

@@ -16,7 +16,7 @@ import eu.kanade.tachiyomi.data.download.DownloadCache
import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.model.Download
import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
import eu.kanade.tachiyomi.util.lang.toDateKey
import eu.kanade.tachiyomi.util.lang.toLocalDate
import kotlinx.collections.immutable.PersistentList
import kotlinx.collections.immutable.mutate
import kotlinx.collections.immutable.persistentListOf
@@ -45,8 +45,8 @@ import tachiyomi.domain.updates.interactor.GetUpdates
import tachiyomi.domain.updates.model.UpdatesWithRelations
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get
import java.time.LocalDate
import java.time.ZonedDateTime
import java.util.Date
class UpdatesScreenModel(
private val sourceManager: SourceManager = Injekt.get(),
@@ -374,12 +374,12 @@ class UpdatesScreenModel(
return items
.map { UpdatesUiModel.Item(it) }
.insertSeparators { before, after ->
val beforeDate = before?.item?.update?.dateFetch?.toDateKey() ?: Date(0)
val afterDate = after?.item?.update?.dateFetch?.toDateKey() ?: Date(0)
val beforeDate = before?.item?.update?.dateFetch?.toLocalDate() ?: LocalDate.MIN
val afterDate = after?.item?.update?.dateFetch?.toLocalDate() ?: LocalDate.MIN
when {
beforeDate.time != afterDate.time && afterDate.time != 0L -> {
UpdatesUiModel.Header(afterDate)
}
beforeDate.isAfter(afterDate)
or afterDate.equals(LocalDate.MIN)
or beforeDate.equals(LocalDate.MIN) -> UpdatesUiModel.Header(afterDate)
// Return null to avoid adding a separator between two items.
else -> null
}