diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt index 9a8201e9f9..bf11df0a28 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/Chapter.kt @@ -21,9 +21,6 @@ interface Chapter : SChapter, Serializable { var source_order: Int - var dateRead: Long? - var history: History? - val isRecognizedNumber: Boolean get() = chapter_number >= 0f diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt index 21ae77e7c7..0daae16f5d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/ChapterImpl.kt @@ -24,13 +24,6 @@ class ChapterImpl : Chapter { override var date_upload: Long = 0 - override var dateRead: Long? = null - override var history: History? = null - set(value) { - field = value - dateRead = history?.last_read - } - override var chapter_number: Float = 0f override var source_order: Int = 0 diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/MangaChapterHistory.kt b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/MangaChapterHistory.kt index b022e08415..6878b2edbb 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/database/models/MangaChapterHistory.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/database/models/MangaChapterHistory.kt @@ -7,9 +7,11 @@ package eu.kanade.tachiyomi.data.database.models * @param chapter object containing chater * @param history object containing history */ -data class MangaChapterHistory(val manga: Manga, val chapter: Chapter, val history: History, var extraChapters: List = emptyList()) { +data class MangaChapterHistory(val manga: Manga, val chapter: Chapter, val history: History, var extraChapters: List = emptyList()) { companion object { fun createBlank() = MangaChapterHistory(MangaImpl(), ChapterImpl(), HistoryImpl()) } } + +data class ChapterHistory(val chapter: Chapter, var history: History? = null) : Chapter by chapter diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt index dc1bd98a73..446a2b581f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaAdapter.kt @@ -5,6 +5,7 @@ import androidx.recyclerview.widget.ItemTouchHelper import com.fredporciuncula.flow.preferences.Preference import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.data.database.models.Chapter +import eu.kanade.tachiyomi.data.database.models.ChapterHistory import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.asImmediateFlowIn import eu.kanade.tachiyomi.ui.manga.chapter.BaseChapterAdapter @@ -96,7 +97,7 @@ class RecentMangaAdapter(val delegate: RecentsInterface) : fun alwaysExpanded(): Boolean fun scope(): CoroutineScope fun getViewType(): RecentsViewType - fun onItemLongClick(position: Int, chapter: Chapter): Boolean + fun onItemLongClick(position: Int, chapter: ChapterHistory): Boolean } override fun onItemSwiped(position: Int, direction: Int) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt index 32267923e1..d6aed448e5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentMangaHolder.kt @@ -17,6 +17,7 @@ import androidx.transition.TransitionManager import androidx.transition.TransitionSet import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Chapter +import eu.kanade.tachiyomi.data.database.models.ChapterHistory import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.image.coil.loadManga import eu.kanade.tachiyomi.databinding.RecentMangaItemBinding @@ -335,16 +336,16 @@ class RecentMangaHolder( } @SuppressLint("ClickableViewAccessibility") - private fun RecentSubChapterItemBinding.configureView(chapter: Chapter, item: RecentMangaItem) { + private fun RecentSubChapterItemBinding.configureView(chapter: ChapterHistory, item: RecentMangaItem) { val context = itemView.context val showDLs = adapter.showDownloads title.text = chapter.preferredChapterName(context, item.mch.manga, adapter.preferences) title.setTextColor(ChapterUtil.readColor(context, chapter)) val notReadYet = item.chapter.id != item.mch.chapter.id && item.mch.history.id != null - subtitle.text = chapter.dateRead?.let { dateRead -> - context.timeSpanFromNow(R.string.read_, dateRead) + subtitle.text = chapter.history?.let { history -> + context.timeSpanFromNow(R.string.read_, history.last_read) .takeIf { - Date().time - dateRead < TimeUnit.DAYS.toMillis(1) || notReadYet + Date().time - history.last_read < TimeUnit.DAYS.toMillis(1) || notReadYet } } ?: "" if (isUpdates && chapter.isRecognizedNumber && diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt index 314ff58c9b..b9c2ba716f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsController.kt @@ -31,6 +31,7 @@ import eu.davidea.flexibleadapter.FlexibleAdapter import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.backup.BackupRestoreService import eu.kanade.tachiyomi.data.database.models.Chapter +import eu.kanade.tachiyomi.data.database.models.ChapterHistory import eu.kanade.tachiyomi.data.database.models.History import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.download.DownloadService @@ -653,7 +654,7 @@ class RecentsController(bundle: Bundle? = null) : override fun areExtraChaptersExpanded(position: Int): Boolean { if (alwaysExpanded()) return true val item = (adapter.getItem(position) as? RecentMangaItem) ?: return false - val date = presenter.dateFormat.format(item.chapter.dateRead ?: item.chapter.date_fetch) + val date = presenter.dateFormat.format(item.mch.history.last_read) val invertDefault = !adapter.collapseGrouped return presenter.expandedSectionsMap["${item.mch.manga} - $date"]?.xor(invertDefault) ?: invertDefault @@ -662,7 +663,7 @@ class RecentsController(bundle: Bundle? = null) : override fun updateExpandedExtraChapters(position: Int, expanded: Boolean) { if (alwaysExpanded()) return val item = (adapter.getItem(position) as? RecentMangaItem) ?: return - val date = presenter.dateFormat.format(item.chapter.dateRead ?: item.chapter.date_fetch) + val date = presenter.dateFormat.format(item.mch.history.last_read) val invertDefault = !adapter.collapseGrouped presenter.expandedSectionsMap["${item.mch.manga} - $date"] = expanded.xor(invertDefault) } @@ -729,7 +730,7 @@ class RecentsController(bundle: Bundle? = null) : } } - override fun onItemLongClick(position: Int, chapter: Chapter): Boolean { + override fun onItemLongClick(position: Int, chapter: ChapterHistory): Boolean { val history = chapter.history ?: return false val item = adapter.getItem(position) as? RecentMangaItem ?: return false val manga = item.mch.manga diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt index c5ee841b6b..823a900dd3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recents/RecentsPresenter.kt @@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.recents import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter +import eu.kanade.tachiyomi.data.database.models.ChapterHistory import eu.kanade.tachiyomi.data.database.models.History import eu.kanade.tachiyomi.data.database.models.HistoryImpl import eu.kanade.tachiyomi.data.database.models.Manga @@ -185,7 +186,7 @@ class RecentsPresenter( .mapNotNull { (key, mchs) -> val manga = mchs.first().manga val chapters = mchs.map { mch -> - mch.chapter.also { it.history = mch.history } + ChapterHistory(mch.chapter, mch.history) }.filterChaptersByScanlators(manga) extraCount += mchs.size - chapters.size if (chapters.isEmpty()) return@mapNotNull null @@ -193,8 +194,8 @@ class RecentsPresenter( val date = Date(it.mch.history.last_read) key == it.manga_id to dateFormat.format(date) }?.takeIf { updatePageCount } - val sort = Comparator { c1, c2 -> - c2.dateRead!!.compareTo(c1.dateRead!!) + val sort = Comparator { c1, c2 -> + c2.history!!.last_read.compareTo(c1.history!!.last_read) } val (sortedChapters, firstChapter, subCount) = setupExtraChapters(existingItem, chapters, sort) @@ -219,14 +220,15 @@ class RecentsPresenter( } .mapNotNull { (key, mcs) -> val manga = mcs.first().manga - val chapters = mcs.map { it.chapter }.filterChaptersByScanlators(manga) + val chapters = mcs.map { ChapterHistory(it.chapter) } + .filterChaptersByScanlators(manga) extraCount += mcs.size - chapters.size if (chapters.isEmpty()) return@mapNotNull null val existingItem = recentItems.takeLast(ENDLESS_LIMIT).find { val date = Date(it.chapter.date_fetch) key == it.manga_id to dateFormat.format(date) }?.takeIf { updatePageCount } - val sort: Comparator = + val sort: Comparator = ChapterSort(manga, chapterFilter, preferences) .sortComparator(true) val (sortedChapters, firstChapter, subCount) = @@ -283,8 +285,8 @@ class RecentsPresenter( if (viewType.isHistory && nextChapter?.id != null && nextChapter.id != it.chapter.id ) { - nextChapter.dateRead = it.chapter.dateRead - it.extraChapters = listOf(it.chapter) + it.extraChapters + it.extraChapters = listOf(ChapterHistory(it.chapter, it.history)) + + it.extraChapters } nextChapter } @@ -386,12 +388,12 @@ class RecentsPresenter( private fun setupExtraChapters( existingItem: RecentMangaItem?, - chapters: List, - sort: Comparator, - ): Triple, Chapter?, Int> { + chapters: List, + sort: Comparator, + ): Triple, Chapter?, Int> { var extraCount = 0 val firstChapter: Chapter - var sortedChapters: MutableList + var sortedChapters: MutableList val reverseRead = !viewType.isHistory if (existingItem != null) { extraCount += chapters.size