refactor: Replacing Any with an actual type

This commit is contained in:
Ahmad Ansori Palembani 2024-06-13 11:35:53 +07:00
parent 68fd2a3548
commit 9cb072d28d
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
5 changed files with 20 additions and 15 deletions

View file

@ -1,6 +1,6 @@
package eu.kanade.tachiyomi.ui.reader.model package eu.kanade.tachiyomi.ui.reader.model
sealed class ChapterTransition { sealed class ChapterTransition : ReaderItem {
abstract val from: ReaderChapter abstract val from: ReaderChapter
abstract val to: ReaderChapter? abstract val to: ReaderChapter?

View file

@ -0,0 +1,3 @@
package eu.kanade.tachiyomi.ui.reader.model
sealed interface ReaderItem

View file

@ -11,7 +11,7 @@ open class ReaderPage(
var stream: (() -> InputStream)? = null, var stream: (() -> InputStream)? = null,
var bg: Drawable? = null, var bg: Drawable? = null,
var bgType: Int? = null, var bgType: Int? = null,
) : Page(index, url, imageUrl, null) { ) : Page(index, url, imageUrl, null), ReaderItem {
/** Value to check if this page is used to as if it was too wide */ /** Value to check if this page is used to as if it was too wide */
var shiftedPage: Boolean = false var shiftedPage: Boolean = false

View file

@ -16,6 +16,7 @@ import eu.kanade.tachiyomi.ui.reader.ReaderActivity
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
import eu.kanade.tachiyomi.ui.reader.model.InsertPage import eu.kanade.tachiyomi.ui.reader.model.InsertPage
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import eu.kanade.tachiyomi.ui.reader.model.ReaderItem
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer import eu.kanade.tachiyomi.ui.reader.viewer.BaseViewer
@ -53,7 +54,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
/** /**
* Currently active item. It can be a chapter page or a chapter transition. * Currently active item. It can be a chapter page or a chapter transition.
*/ */
private var currentPage: Any? = null private var currentPage: ReaderItem? = null
/** /**
* Viewer chapters to set when the pager enters idle mode. Otherwise, if the view was settling * Viewer chapters to set when the pager enters idle mode. Otherwise, if the view was settling
@ -281,7 +282,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
} }
} }
private fun getItem(position: Int, currentChapter: ReaderChapter?): Pair<Any, Any?>? { private fun getItem(position: Int, currentChapter: ReaderChapter?): Pair<ReaderItem, ReaderItem?>? {
return adapter.joinedItems.firstOrNull { return adapter.joinedItems.firstOrNull {
val readerPage = it.first as? ReaderPage ?: return@firstOrNull false val readerPage = it.first as? ReaderPage ?: return@firstOrNull false
readerPage.index == position && readerPage.chapter.chapter.id == currentChapter?.chapter?.id readerPage.index == position && readerPage.chapter.chapter.id == currentChapter?.chapter?.id
@ -502,7 +503,7 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer {
return false return false
} }
fun hideMenuIfVisible(item: Any) { fun hideMenuIfVisible(item: Pair<ReaderItem, ReaderItem?>) {
val currentItem = adapter.joinedItems.getOrNull(pager.currentItem) val currentItem = adapter.joinedItems.getOrNull(pager.currentItem)
if (item == currentItem && isIdle) { if (item == currentItem && isIdle) {
activity.hideMenu() activity.hideMenu()

View file

@ -6,6 +6,7 @@ import co.touchlab.kermit.Logger
import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition import eu.kanade.tachiyomi.ui.reader.model.ChapterTransition
import eu.kanade.tachiyomi.ui.reader.model.InsertPage import eu.kanade.tachiyomi.ui.reader.model.InsertPage
import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter import eu.kanade.tachiyomi.ui.reader.model.ReaderChapter
import eu.kanade.tachiyomi.ui.reader.model.ReaderItem
import eu.kanade.tachiyomi.ui.reader.model.ReaderPage import eu.kanade.tachiyomi.ui.reader.model.ReaderPage
import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters import eu.kanade.tachiyomi.ui.reader.model.ViewerChapters
import eu.kanade.tachiyomi.ui.reader.viewer.hasMissingChapters import eu.kanade.tachiyomi.ui.reader.viewer.hasMissingChapters
@ -22,11 +23,11 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
/** /**
* Paired list of currently set items. * Paired list of currently set items.
*/ */
var joinedItems: MutableList<Pair<Any, Any?>> = mutableListOf() var joinedItems: MutableList<Pair<ReaderItem, ReaderItem?>> = mutableListOf()
private set private set
/** Single list of items */ /** Single list of items */
private var subItems: MutableList<Any> = mutableListOf() private var subItems: MutableList<ReaderItem> = mutableListOf()
var nextTransition: ChapterTransition.Next? = null var nextTransition: ChapterTransition.Next? = null
private set private set
@ -47,7 +48,7 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
* has R2L direction. * has R2L direction.
*/ */
fun setChapters(chapters: ViewerChapters, forceTransition: Boolean) { fun setChapters(chapters: ViewerChapters, forceTransition: Boolean) {
val newItems = mutableListOf<Any>() val newItems = mutableListOf<ReaderItem>()
// Force chapter transition page if there are missing chapters // Force chapter transition page if there are missing chapters
val prevHasMissingChapters = hasMissingChapters(chapters.currChapter, chapters.prevChapter) val prevHasMissingChapters = hasMissingChapters(chapters.currChapter, chapters.prevChapter)
@ -132,7 +133,6 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
return when (item) { return when (item) {
is ReaderPage -> PagerPageHolder(viewer, item, item2 as? ReaderPage) is ReaderPage -> PagerPageHolder(viewer, item, item2 as? ReaderPage)
is ChapterTransition -> PagerTransitionHolder(viewer, item) is ChapterTransition -> PagerTransitionHolder(viewer, item)
else -> throw NotImplementedError("Holder for ${item.javaClass} not implemented")
} }
} }
@ -193,7 +193,7 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
} }
} }
if (viewer.config.splitPages) { if (viewer.config.splitPages) {
val pagedItems = mutableListOf<Any>() val pagedItems = mutableListOf<ReaderItem>()
subItems.forEach { subItems.forEach {
val page = it as? ReaderPage ?: return@forEach val page = it as? ReaderPage ?: return@forEach
@ -208,20 +208,21 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
} }
this.joinedItems = pagedItems.map { this.joinedItems = pagedItems.map {
Pair<Any, Any?>( Pair<ReaderItem, ReaderItem?>(
it, it,
if ((it as? ReaderPage)?.fullPage == true) (it as? ReaderPage)?.firstHalf else null, // I don't even know what this is... but I'm guessing he try to check if "firstHalf" is not null
if ((it as? ReaderPage)?.fullPage == true && it.firstHalf != null) it else null,
) )
}.toMutableList() }.toMutableList()
} else { } else {
this.joinedItems = subItems.map { Pair<Any, Any?>(it, null) }.toMutableList() this.joinedItems = subItems.map { Pair<ReaderItem, ReaderItem?>(it, null) }.toMutableList()
} }
if (viewer is R2LPagerViewer) { if (viewer is R2LPagerViewer) {
joinedItems.reverse() joinedItems.reverse()
} }
} else { } else {
val pagedItems = mutableListOf<MutableList<ReaderPage?>>() val pagedItems = mutableListOf<MutableList<ReaderPage?>>()
val otherItems = mutableListOf<Any>() val otherItems = mutableListOf<ReaderItem>()
pagedItems.add(mutableListOf()) pagedItems.add(mutableListOf())
// Step 1: segment the pages and transition pages // Step 1: segment the pages and transition pages
subItems.forEach { subItems.forEach {
@ -238,7 +239,7 @@ class PagerViewerAdapter(private val viewer: PagerViewer) : ViewPagerAdapter() {
} }
} }
var pagedIndex = 0 var pagedIndex = 0
val subJoinedItems = mutableListOf<Pair<Any, Any?>>() val subJoinedItems = mutableListOf<Pair<ReaderItem, ReaderItem?>>()
// Step 2: run through each set of pages // Step 2: run through each set of pages
pagedItems.forEach { items -> pagedItems.forEach { items ->