mirror of
https://github.com/Suwayomi/TachideskJUI.git
synced 2025-12-10 06:42:05 +01:00
Infinite scrolling for pager
This commit is contained in:
@@ -105,8 +105,7 @@ class ReaderMenuViewModel @Inject constructor(
|
||||
?.pages
|
||||
?.map { (it as? PagesState.Success)?.pages }
|
||||
?: flowOf(null)
|
||||
combine(previousChapterPages, chapterPages, nextChapterPages, readerModeSettings.continuous) { prev, cur, next, cont ->
|
||||
if (cont) {
|
||||
combine(previousChapterPages, chapterPages, nextChapterPages) { prev, cur, next ->
|
||||
(
|
||||
prev.orEmpty() +
|
||||
ReaderPageSeparator(it.prevChapter, it.currChapter) +
|
||||
@@ -114,13 +113,7 @@ class ReaderMenuViewModel @Inject constructor(
|
||||
ReaderPageSeparator(it.currChapter, it.nextChapter) +
|
||||
next.orEmpty()
|
||||
).toImmutableList()
|
||||
} else {
|
||||
(
|
||||
listOf(ReaderPageSeparator(it.prevChapter, it.currChapter)) +
|
||||
cur.orEmpty() +
|
||||
ReaderPageSeparator(it.currChapter, it.nextChapter)
|
||||
).toImmutableList()
|
||||
}
|
||||
|
||||
}
|
||||
}.stateIn(scope, SharingStarted.Eagerly, persistentListOf())
|
||||
|
||||
|
||||
@@ -23,9 +23,9 @@ import ca.gosyer.jui.ui.reader.model.ReaderChapter
|
||||
import ca.gosyer.jui.ui.reader.model.ReaderItem
|
||||
import ca.gosyer.jui.ui.reader.model.ReaderPage
|
||||
import ca.gosyer.jui.ui.reader.model.ReaderPageSeparator
|
||||
import com.google.accompanist.pager.HorizontalPager
|
||||
import com.google.accompanist.pager.VerticalPager
|
||||
import com.google.accompanist.pager.rememberPagerState
|
||||
import ca.gosyer.jui.uicore.pager.HorizontalPager
|
||||
import ca.gosyer.jui.uicore.pager.VerticalPager
|
||||
import ca.gosyer.jui.uicore.pager.rememberPagerState
|
||||
import kotlinx.collections.immutable.ImmutableList
|
||||
import kotlinx.coroutines.flow.SharedFlow
|
||||
import kotlinx.coroutines.flow.launchIn
|
||||
@@ -88,7 +88,14 @@ fun PagerReader(
|
||||
count = pages.size,
|
||||
state = state,
|
||||
reverseLayout = direction == Direction.Up,
|
||||
modifier = modifier
|
||||
modifier = modifier,
|
||||
key = {
|
||||
when (val page = pages.getOrNull(it)) {
|
||||
is ReaderPage -> page.chapter.chapter.index to page.index
|
||||
is ReaderPageSeparator -> page.previousChapter?.chapter?.index to page.nextChapter?.chapter?.index
|
||||
else -> it
|
||||
}
|
||||
}
|
||||
) {
|
||||
HandlePager(
|
||||
pages = pages,
|
||||
@@ -104,7 +111,14 @@ fun PagerReader(
|
||||
count = pages.size,
|
||||
state = state,
|
||||
reverseLayout = direction == Direction.Left,
|
||||
modifier = modifier
|
||||
modifier = modifier,
|
||||
key = {
|
||||
when (val page = pages.getOrNull(it)) {
|
||||
is ReaderPage -> page.chapter.chapter.index to page.index
|
||||
is ReaderPageSeparator -> page.previousChapter?.chapter?.index to page.nextChapter?.chapter?.index
|
||||
else -> it
|
||||
}
|
||||
}
|
||||
) {
|
||||
HandlePager(
|
||||
pages = pages,
|
||||
|
||||
Reference in New Issue
Block a user