Use toRelativeString in Updates and History headings

This commit is contained in:
arkon 2021-08-15 17:42:06 -04:00
parent fbc6965c4e
commit ae1a76da2b
3 changed files with 29 additions and 19 deletions

View File

@ -1,6 +1,5 @@
package eu.kanade.tachiyomi.ui.recent package eu.kanade.tachiyomi.ui.recent
import android.text.format.DateUtils
import android.view.View import android.view.View
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.FlexibleAdapter
@ -9,9 +8,15 @@ import eu.davidea.flexibleadapter.items.IFlexible
import eu.davidea.viewholders.FlexibleViewHolder import eu.davidea.viewholders.FlexibleViewHolder
import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.databinding.SectionHeaderItemBinding import eu.kanade.tachiyomi.databinding.SectionHeaderItemBinding
import eu.kanade.tachiyomi.util.lang.toRelativeString
import java.text.DateFormat
import java.util.Date import java.util.Date
class DateSectionItem(val date: Date) : AbstractHeaderItem<DateSectionItem.DateSectionItemHolder>() { class DateSectionItem(
private val date: Date,
private val range: Int,
private val dateFormat: DateFormat,
) : AbstractHeaderItem<DateSectionItem.DateSectionItemHolder>() {
override fun getLayoutRes(): Int { override fun getLayoutRes(): Int {
return R.layout.section_header_item return R.layout.section_header_item
@ -37,14 +42,12 @@ class DateSectionItem(val date: Date) : AbstractHeaderItem<DateSectionItem.DateS
return date.hashCode() return date.hashCode()
} }
inner class DateSectionItemHolder(view: View, adapter: FlexibleAdapter<*>) : FlexibleViewHolder(view, adapter, true) { inner class DateSectionItemHolder(private val view: View, adapter: FlexibleAdapter<*>) : FlexibleViewHolder(view, adapter, true) {
private val binding = SectionHeaderItemBinding.bind(view) private val binding = SectionHeaderItemBinding.bind(view)
private val now = Date().time
fun bind(item: DateSectionItem) { fun bind(item: DateSectionItem) {
binding.title.text = DateUtils.getRelativeTimeSpanString(item.date.time, now, DateUtils.DAY_IN_MILLIS) binding.title.text = item.date.toRelativeString(view.context, range, dateFormat)
} }
} }
} }

View File

@ -6,6 +6,7 @@ import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.data.database.models.History import eu.kanade.tachiyomi.data.database.models.History
import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory import eu.kanade.tachiyomi.data.database.models.MangaChapterHistory
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import eu.kanade.tachiyomi.ui.recent.DateSectionItem import eu.kanade.tachiyomi.ui.recent.DateSectionItem
import eu.kanade.tachiyomi.util.lang.toDateKey import eu.kanade.tachiyomi.util.lang.toDateKey
@ -13,6 +14,7 @@ import rx.Observable
import rx.Subscription import rx.Subscription
import rx.android.schedulers.AndroidSchedulers import rx.android.schedulers.AndroidSchedulers
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
import java.text.DateFormat
import java.util.Calendar import java.util.Calendar
import java.util.Date import java.util.Date
import java.util.TreeMap import java.util.TreeMap
@ -24,10 +26,11 @@ import java.util.TreeMap
*/ */
class HistoryPresenter : BasePresenter<HistoryController>() { class HistoryPresenter : BasePresenter<HistoryController>() {
/** private val db: DatabaseHelper by injectLazy()
* Used to connect to database private val preferences: PreferencesHelper by injectLazy()
*/
val db: DatabaseHelper by injectLazy() private val relativeTime: Int = preferences.relativeTime().get()
private val dateFormat: DateFormat = preferences.dateFormat()
private var recentMangaSubscription: Subscription? = null private var recentMangaSubscription: Subscription? = null
@ -65,7 +68,7 @@ class HistoryPresenter : BasePresenter<HistoryController>() {
val byDay = recents val byDay = recents
.groupByTo(map, { it.history.last_read.toDateKey() }) .groupByTo(map, { it.history.last_read.toDateKey() })
byDay.flatMap { entry -> byDay.flatMap { entry ->
val dateItem = DateSectionItem(entry.key) val dateItem = DateSectionItem(entry.key, relativeTime, dateFormat)
entry.value.map { HistoryItem(it, dateItem) } entry.value.map { HistoryItem(it, dateItem) }
} }
} }

View File

@ -15,18 +15,22 @@ import rx.Observable
import rx.android.schedulers.AndroidSchedulers import rx.android.schedulers.AndroidSchedulers
import rx.schedulers.Schedulers import rx.schedulers.Schedulers
import timber.log.Timber import timber.log.Timber
import uy.kohesive.injekt.Injekt
import uy.kohesive.injekt.api.get import uy.kohesive.injekt.api.get
import uy.kohesive.injekt.injectLazy
import java.text.DateFormat
import java.util.Calendar import java.util.Calendar
import java.util.Date import java.util.Date
import java.util.TreeMap import java.util.TreeMap
class UpdatesPresenter( class UpdatesPresenter : BasePresenter<UpdatesController>() {
val preferences: PreferencesHelper = Injekt.get(),
private val db: DatabaseHelper = Injekt.get(), val preferences: PreferencesHelper by injectLazy()
private val downloadManager: DownloadManager = Injekt.get(), private val db: DatabaseHelper by injectLazy()
private val sourceManager: SourceManager = Injekt.get() private val downloadManager: DownloadManager by injectLazy()
) : BasePresenter<UpdatesController>() { private val sourceManager: SourceManager by injectLazy()
private val relativeTime: Int = preferences.relativeTime().get()
private val dateFormat: DateFormat = preferences.dateFormat()
/** /**
* List containing chapter and manga information * List containing chapter and manga information
@ -82,7 +86,7 @@ class UpdatesPresenter(
val byDay = mangaChapters val byDay = mangaChapters
.groupByTo(map, { it.chapter.date_fetch.toDateKey() }) .groupByTo(map, { it.chapter.date_fetch.toDateKey() })
byDay.flatMap { entry -> byDay.flatMap { entry ->
val dateItem = DateSectionItem(entry.key) val dateItem = DateSectionItem(entry.key, relativeTime, dateFormat)
entry.value entry.value
.sortedWith(compareBy({ it.chapter.date_fetch }, { it.chapter.chapter_number })).asReversed() .sortedWith(compareBy({ it.chapter.date_fetch }, { it.chapter.chapter_number })).asReversed()
.map { UpdatesItem(it.chapter, it.manga, dateItem) } .map { UpdatesItem(it.chapter, it.manga, dateItem) }