From fbb3faa5b2170e5361292932ad93eec6d1c03653 Mon Sep 17 00:00:00 2001 From: Acclorite <140836141+Acclorite@users.noreply.github.com> Date: Fri, 4 Oct 2024 12:03:18 +0300 Subject: [PATCH] =?UTF-8?q?=F0=9F=9B=A0=EF=B8=8F=20Fix=20"NaN"=20for=20pro?= =?UTF-8?q?gress=20in=20Reader?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fixed issue, where the value is NaN in Reader Resolves: #90 --- .../book_story/presentation/core/util/Extensions.kt | 5 +++++ .../screens/reader/data/ReaderViewModel.kt | 10 ++++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/Extensions.kt b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/Extensions.kt index e08270ba..55bac524 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/core/util/Extensions.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/core/util/Extensions.kt @@ -47,6 +47,11 @@ fun Float.calculateProgress(digits: Int): String { .dropWhile { it == '-' } } +fun Float.coerceAndPreventNaN(): Float { + if (isNaN()) return 0f + return this.coerceIn(0f, 1f) +} + @OptIn(ExperimentalFoundationApi::class) fun Modifier.noRippleClickable( enabled: Boolean = true, diff --git a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt index 5ee5c335..0dd48f8f 100644 --- a/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt +++ b/app/src/main/java/ua/acclorite/book_story/presentation/screens/reader/data/ReaderViewModel.kt @@ -36,6 +36,7 @@ import ua.acclorite.book_story.domain.util.Resource import ua.acclorite.book_story.domain.util.UIText import ua.acclorite.book_story.presentation.core.navigation.Screen import ua.acclorite.book_story.presentation.core.util.BaseViewModel +import ua.acclorite.book_story.presentation.core.util.coerceAndPreventNaN import ua.acclorite.book_story.presentation.core.util.launchActivity import javax.inject.Inject import kotlin.math.roundToInt @@ -617,8 +618,8 @@ class ReaderViewModel @Inject constructor( val currentIndex = index - startIndex val endIndex = endIndex - startIndex - (currentIndex / endIndex.toFloat()).coerceIn(0f, 1f) - } + (currentIndex / endIndex.toFloat()) + }.coerceAndPreventNaN() _state.update { it.copy( @@ -647,8 +648,9 @@ class ReaderViewModel @Inject constructor( return 1f } - return@run ((firstVisibleItemIndex ?: listState.firstVisibleItemIndex) / - (text.lastIndex).toFloat()).coerceIn(0f, 1f) + return@run (firstVisibleItemIndex ?: listState.firstVisibleItemIndex) + .div(text.lastIndex.toFloat()) + .coerceAndPreventNaN() } }