diff --git a/app/src/main/java/com/capyreader/app/ui/articles/list/ArticleRowSwipeState.kt b/app/src/main/java/com/capyreader/app/ui/articles/list/ArticleRowSwipeState.kt index 0ad95e34..d4a520ed 100644 --- a/app/src/main/java/com/capyreader/app/ui/articles/list/ArticleRowSwipeState.kt +++ b/app/src/main/java/com/capyreader/app/ui/articles/list/ArticleRowSwipeState.kt @@ -1,11 +1,8 @@ package com.capyreader.app.ui.articles.list import android.content.Context -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.rounded.OpenInNew import androidx.compose.material3.SwipeToDismissBoxState import androidx.compose.material3.SwipeToDismissBoxValue -import androidx.compose.material3.rememberSwipeToDismissBoxState import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.remember @@ -17,6 +14,7 @@ import com.capyreader.app.common.openLinkExternally import com.capyreader.app.ui.articles.LocalArticleActions import com.capyreader.app.ui.components.ArticleAction import com.capyreader.app.ui.components.readAction +import com.capyreader.app.ui.components.rememberNoFlingSwipeToDismissBoxState import com.capyreader.app.ui.components.starAction import com.capyreader.app.ui.settings.panels.RowSwipeOption import com.jocmp.capy.Article @@ -37,7 +35,7 @@ internal fun rememberArticleRowSwipeState( appPreferences: AppPreferences = koinInject(), ): ArticleRowSwipeState { val actions = LocalArticleActions.current - val state = rememberSwipeToDismissBoxState() + val state = rememberNoFlingSwipeToDismissBoxState() val context = LocalContext.current val swipeStart by appPreferences.articleListOptions.swipeStart.asState() val swipeEnd by appPreferences.articleListOptions.swipeEnd.asState() diff --git a/app/src/main/java/com/capyreader/app/ui/components/RememberNoFlingSwipeToDismissBoxState.kt b/app/src/main/java/com/capyreader/app/ui/components/RememberNoFlingSwipeToDismissBoxState.kt new file mode 100644 index 00000000..adc38cbb --- /dev/null +++ b/app/src/main/java/com/capyreader/app/ui/components/RememberNoFlingSwipeToDismissBoxState.kt @@ -0,0 +1,28 @@ +package com.capyreader.app.ui.components + +import androidx.compose.material3.SwipeToDismissBoxDefaults +import androidx.compose.material3.SwipeToDismissBoxState +import androidx.compose.material3.SwipeToDismissBoxValue +import androidx.compose.runtime.Composable +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.unit.Density + +// https://issuetracker.google.com/issues/252334353#comment16 +@Composable +fun rememberNoFlingSwipeToDismissBoxState( + initialValue: SwipeToDismissBoxValue = SwipeToDismissBoxValue.Settled, + confirmValueChange: (SwipeToDismissBoxValue) -> Boolean = { true }, + positionalThreshold: (totalDistance: Float) -> Float = + SwipeToDismissBoxDefaults.positionalThreshold, +): SwipeToDismissBoxState { + val density = Density(Float.POSITIVE_INFINITY) // LocalDensity.current + return rememberSaveable( + saver = SwipeToDismissBoxState.Saver( + confirmValueChange = confirmValueChange, + density = density, + positionalThreshold = positionalThreshold + ) + ) { + SwipeToDismissBoxState(initialValue, density, confirmValueChange, positionalThreshold) + } +}