From 8c162c75c5ae44be9994b48d3ea36082f66e1c77 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Nov 2020 00:41:08 +0530 Subject: [PATCH 1/5] Make saving a swipe dismiss action Signed-off-by: Harsh Shandilya --- .../lobsters/ui/posts/HottestPosts.kt | 17 ++++-- .../lobsters/ui/posts/LobstersItem.kt | 13 +--- .../msfjarvis/lobsters/ui/posts/SavedPosts.kt | 17 ++++-- .../lobsters/util/AnimatedSwipeDismiss.kt | 61 +++++++++++++++++++ 4 files changed, 87 insertions(+), 21 deletions(-) create mode 100644 app/src/main/java/dev/msfjarvis/lobsters/util/AnimatedSwipeDismiss.kt diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/HottestPosts.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/HottestPosts.kt index 6b040842..91ac21ca 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/HottestPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/HottestPosts.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import dev.msfjarvis.lobsters.model.LobstersPost import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncherAmbient +import dev.msfjarvis.lobsters.util.AnimatedSwipeDismiss @Composable fun HottestPosts( @@ -30,11 +31,17 @@ fun HottestPosts( if (posts.lastIndex == index) { overscrollAction.invoke() } - LobstersItem( - post = item, - linkOpenAction = { post -> urlLauncher.launch(post.url.ifEmpty { post.commentsUrl }) }, - commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, - saveAction = saveAction, + AnimatedSwipeDismiss( + item = item, + background = {}, + content = { + LobstersItem( + post = item, + linkOpenAction = { post -> urlLauncher.launch(post.url.ifEmpty { post.commentsUrl }) }, + commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, + ) + }, + onDismiss = saveAction, ) } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt index ec994581..c84d8abd 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt @@ -13,8 +13,6 @@ import androidx.compose.foundation.lazy.LazyColumnFor import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.runtime.Composable -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color @@ -36,10 +34,8 @@ fun LazyItemScope.LobstersItem( modifier: Modifier = Modifier, linkOpenAction: (LobstersPost) -> Unit, commentOpenAction: (LobstersPost) -> Unit, - saveAction: (LobstersPost) -> Unit, ) { - val liked = remember { mutableStateOf(false) } - val titleColor = if (post.isLiked || liked.value) savedTitleColor else titleColor + val titleColor = if (post.isLiked) savedTitleColor else titleColor Column( modifier = modifier @@ -47,11 +43,6 @@ fun LazyItemScope.LobstersItem( .clickable( onClick = { linkOpenAction.invoke(post) }, onLongClick = { commentOpenAction.invoke(post) }, - onDoubleClick = { - post.isLiked = true - liked.value = true - saveAction.invoke(post) - }, ), ) { Text( @@ -128,7 +119,7 @@ fun PreviewLobstersItem() { post = item, linkOpenAction = {}, commentOpenAction = {}, - saveAction = {}) + ) } } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt index 4765aed5..f15c8073 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt @@ -8,6 +8,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import dev.msfjarvis.lobsters.model.LobstersPost import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncherAmbient +import dev.msfjarvis.lobsters.util.AnimatedSwipeDismiss @Composable fun SavedPosts( @@ -26,11 +27,17 @@ fun SavedPosts( state = listState, modifier = Modifier.padding(horizontal = 8.dp).then(modifier) ) { item -> - LobstersItem( - post = item, - linkOpenAction = { post -> urlLauncher.launch(post.url.ifEmpty { post.commentsUrl }) }, - commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, - saveAction = saveAction, + AnimatedSwipeDismiss( + item = item, + background = {}, + content = { + LobstersItem( + post = item, + linkOpenAction = { post -> urlLauncher.launch(post.url.ifEmpty { post.commentsUrl }) }, + commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, + ) + }, + onDismiss = saveAction, ) } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/util/AnimatedSwipeDismiss.kt b/app/src/main/java/dev/msfjarvis/lobsters/util/AnimatedSwipeDismiss.kt new file mode 100644 index 00000000..963a8a0a --- /dev/null +++ b/app/src/main/java/dev/msfjarvis/lobsters/util/AnimatedSwipeDismiss.kt @@ -0,0 +1,61 @@ +package dev.msfjarvis.lobsters.util + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.core.tween +import androidx.compose.animation.expandVertically +import androidx.compose.animation.shrinkVertically +import androidx.compose.material.DismissDirection +import androidx.compose.material.DismissValue +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.SwipeToDismiss +import androidx.compose.material.rememberDismissState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.onCommit +import androidx.compose.ui.Modifier + +/** + * Imported from Brandon McAnsh's [Gist](https://gist.github.com/bmc08gt/fca95db3bf9fcf255d76f03ec10ea3f9). + */ +@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterialApi::class) +@Composable +fun AnimatedSwipeDismiss( + modifier: Modifier = Modifier, + item: T, + background: @Composable (isDismissed: Boolean) -> Unit, + content: @Composable (isDismissed: Boolean) -> Unit, + directions: Set = setOf(DismissDirection.StartToEnd, DismissDirection.EndToStart), + enter: EnterTransition = expandVertically(), + exit: ExitTransition = shrinkVertically( + animSpec = tween( + durationMillis = 500, + ) + ), + onDismiss: (T) -> Unit +) { + val dismissState = rememberDismissState() + val isDismissed = dismissState.isDismissed(DismissDirection.EndToStart) + + onCommit(dismissState.value) { + if (dismissState.value == DismissValue.DismissedToStart) { + onDismiss(item) + } + } + + AnimatedVisibility( + modifier = modifier, + visible = !isDismissed, + enter = enter, + exit = exit + ) { + SwipeToDismiss( + modifier = modifier, + state = dismissState, + directions = directions, + background = { background(isDismissed) }, + dismissContent = { content(isDismissed) } + ) + } +} From a52c75601c5e1c2319eea8d0e066ca80deb0c2a7 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Nov 2020 01:03:54 +0530 Subject: [PATCH 2/5] Switch to `Modifier.swipeable` Signed-off-by: Harsh Shandilya --- app/build.gradle | 1 + .../lobsters/ui/posts/HottestPosts.kt | 17 ++---- .../lobsters/ui/posts/LobstersItem.kt | 25 ++++++++ .../msfjarvis/lobsters/ui/posts/SavedPosts.kt | 17 ++---- .../lobsters/util/AnimatedSwipeDismiss.kt | 61 ------------------- 5 files changed, 36 insertions(+), 85 deletions(-) delete mode 100644 app/src/main/java/dev/msfjarvis/lobsters/util/AnimatedSwipeDismiss.kt diff --git a/app/build.gradle b/app/build.gradle index 76a5d65b..98cdc236 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,6 +53,7 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { "-Xskip-prerelease-check", "-Xopt-in=kotlin.RequiresOptIn", "-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", + "-Xopt-in=androidx.compose.material.ExperimentalMaterialApi", ] } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/HottestPosts.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/HottestPosts.kt index 91ac21ca..6b040842 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/HottestPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/HottestPosts.kt @@ -8,7 +8,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import dev.msfjarvis.lobsters.model.LobstersPost import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncherAmbient -import dev.msfjarvis.lobsters.util.AnimatedSwipeDismiss @Composable fun HottestPosts( @@ -31,17 +30,11 @@ fun HottestPosts( if (posts.lastIndex == index) { overscrollAction.invoke() } - AnimatedSwipeDismiss( - item = item, - background = {}, - content = { - LobstersItem( - post = item, - linkOpenAction = { post -> urlLauncher.launch(post.url.ifEmpty { post.commentsUrl }) }, - commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, - ) - }, - onDismiss = saveAction, + LobstersItem( + post = item, + linkOpenAction = { post -> urlLauncher.launch(post.url.ifEmpty { post.commentsUrl }) }, + commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, + saveAction = saveAction, ) } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt index c84d8abd..277e15d5 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt @@ -6,16 +6,23 @@ import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.offsetPx import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.lazy.LazyColumnFor import androidx.compose.foundation.lazy.LazyItemScope import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.FractionalThreshold +import androidx.compose.material.rememberSwipeableState +import androidx.compose.material.swipeable import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.gesture.scrollorientationlocking.Orientation import androidx.compose.ui.graphics.Color +import androidx.compose.ui.platform.ConfigurationAmbient +import androidx.compose.ui.platform.DensityAmbient import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.ui.tooling.preview.Preview @@ -34,12 +41,29 @@ fun LazyItemScope.LobstersItem( modifier: Modifier = Modifier, linkOpenAction: (LobstersPost) -> Unit, commentOpenAction: (LobstersPost) -> Unit, + saveAction: (LobstersPost) -> Unit, ) { val titleColor = if (post.isLiked) savedTitleColor else titleColor + val width = with(DensityAmbient.current) { + ConfigurationAmbient.current.screenWidthDp.toDp().toPx() + } + val swipeableState = rememberSwipeableState("Not Swiped") + val anchors = mapOf(0f to "Not Swiped", width to "Fully Swiped") + if (swipeableState.offset.value >= (width / 2)) { + saveAction.invoke(post) + swipeableState.animateTo("Not Swiped") + } Column( modifier = modifier .fillParentMaxWidth() + .swipeable( + state = swipeableState, + anchors = anchors, + thresholds = { _, _ -> FractionalThreshold(0.5f) }, + orientation = Orientation.Horizontal + ) + .offsetPx(swipeableState.offset) .clickable( onClick = { linkOpenAction.invoke(post) }, onLongClick = { commentOpenAction.invoke(post) }, @@ -119,6 +143,7 @@ fun PreviewLobstersItem() { post = item, linkOpenAction = {}, commentOpenAction = {}, + saveAction = {}, ) } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt index f15c8073..4765aed5 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/SavedPosts.kt @@ -8,7 +8,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import dev.msfjarvis.lobsters.model.LobstersPost import dev.msfjarvis.lobsters.ui.urllauncher.UrlLauncherAmbient -import dev.msfjarvis.lobsters.util.AnimatedSwipeDismiss @Composable fun SavedPosts( @@ -27,17 +26,11 @@ fun SavedPosts( state = listState, modifier = Modifier.padding(horizontal = 8.dp).then(modifier) ) { item -> - AnimatedSwipeDismiss( - item = item, - background = {}, - content = { - LobstersItem( - post = item, - linkOpenAction = { post -> urlLauncher.launch(post.url.ifEmpty { post.commentsUrl }) }, - commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, - ) - }, - onDismiss = saveAction, + LobstersItem( + post = item, + linkOpenAction = { post -> urlLauncher.launch(post.url.ifEmpty { post.commentsUrl }) }, + commentOpenAction = { post -> urlLauncher.launch(post.commentsUrl) }, + saveAction = saveAction, ) } } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/util/AnimatedSwipeDismiss.kt b/app/src/main/java/dev/msfjarvis/lobsters/util/AnimatedSwipeDismiss.kt deleted file mode 100644 index 963a8a0a..00000000 --- a/app/src/main/java/dev/msfjarvis/lobsters/util/AnimatedSwipeDismiss.kt +++ /dev/null @@ -1,61 +0,0 @@ -package dev.msfjarvis.lobsters.util - -import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.EnterTransition -import androidx.compose.animation.ExitTransition -import androidx.compose.animation.ExperimentalAnimationApi -import androidx.compose.animation.core.tween -import androidx.compose.animation.expandVertically -import androidx.compose.animation.shrinkVertically -import androidx.compose.material.DismissDirection -import androidx.compose.material.DismissValue -import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material.SwipeToDismiss -import androidx.compose.material.rememberDismissState -import androidx.compose.runtime.Composable -import androidx.compose.runtime.onCommit -import androidx.compose.ui.Modifier - -/** - * Imported from Brandon McAnsh's [Gist](https://gist.github.com/bmc08gt/fca95db3bf9fcf255d76f03ec10ea3f9). - */ -@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterialApi::class) -@Composable -fun AnimatedSwipeDismiss( - modifier: Modifier = Modifier, - item: T, - background: @Composable (isDismissed: Boolean) -> Unit, - content: @Composable (isDismissed: Boolean) -> Unit, - directions: Set = setOf(DismissDirection.StartToEnd, DismissDirection.EndToStart), - enter: EnterTransition = expandVertically(), - exit: ExitTransition = shrinkVertically( - animSpec = tween( - durationMillis = 500, - ) - ), - onDismiss: (T) -> Unit -) { - val dismissState = rememberDismissState() - val isDismissed = dismissState.isDismissed(DismissDirection.EndToStart) - - onCommit(dismissState.value) { - if (dismissState.value == DismissValue.DismissedToStart) { - onDismiss(item) - } - } - - AnimatedVisibility( - modifier = modifier, - visible = !isDismissed, - enter = enter, - exit = exit - ) { - SwipeToDismiss( - modifier = modifier, - state = dismissState, - directions = directions, - background = { background(isDismissed) }, - dismissContent = { content(isDismissed) } - ) - } -} From 3f223f430659f9cb5a205b55e3eece1d7984c053 Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Nov 2020 01:07:12 +0530 Subject: [PATCH 3/5] Remove liked post coloring from UI Signed-off-by: Harsh Shandilya --- .../dev/msfjarvis/lobsters/ui/posts/EmptyList.kt | 4 ++-- .../dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt | 2 -- .../java/dev/msfjarvis/lobsters/ui/theme/Theme.kt | 1 - .../lobsters/ui/viewmodel/LobstersViewModel.kt | 12 ------------ .../dev/msfjarvis/lobsters/model/LobstersPost.kt | 1 - 5 files changed, 2 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/EmptyList.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/EmptyList.kt index a88d86af..4173c68c 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/EmptyList.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/EmptyList.kt @@ -8,11 +8,11 @@ import androidx.compose.foundation.layout.padding import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import dev.msfjarvis.lobsters.R import dev.msfjarvis.lobsters.util.IconResource -import dev.msfjarvis.lobsters.ui.theme.savedTitleColor @Composable fun EmptyList(saved: Boolean) { @@ -24,7 +24,7 @@ fun EmptyList(saved: Boolean) { if (saved) { IconResource( R.drawable.ic_favorite_border_24px, - tint = savedTitleColor, + tint = Color(0xFFD97373), modifier = Modifier.padding(16.dp) ) Text(stringResource(R.string.no_saved_posts)) diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt index 277e15d5..a767814c 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt @@ -32,7 +32,6 @@ import dev.msfjarvis.lobsters.injection.ApiModule import dev.msfjarvis.lobsters.model.LobstersPost import dev.msfjarvis.lobsters.model.Submitter import dev.msfjarvis.lobsters.ui.theme.LobstersTheme -import dev.msfjarvis.lobsters.ui.theme.savedTitleColor import dev.msfjarvis.lobsters.ui.theme.titleColor @Composable @@ -43,7 +42,6 @@ fun LazyItemScope.LobstersItem( commentOpenAction: (LobstersPost) -> Unit, saveAction: (LobstersPost) -> Unit, ) { - val titleColor = if (post.isLiked) savedTitleColor else titleColor val width = with(DensityAmbient.current) { ConfigurationAmbient.current.screenWidthDp.toDp().toPx() } diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/theme/Theme.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/theme/Theme.kt index 1bc934d9..d80e8b95 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/theme/Theme.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/theme/Theme.kt @@ -6,7 +6,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.graphics.Color val titleColor = Color(0xFF7395D9) -val savedTitleColor = Color(0xFFD97373) val darkColors = darkColors( primary = Color.White, diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/viewmodel/LobstersViewModel.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/viewmodel/LobstersViewModel.kt index cb29bd7b..76c59379 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/viewmodel/LobstersViewModel.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/viewmodel/LobstersViewModel.kt @@ -54,15 +54,9 @@ class LobstersViewModel @ViewModelInject constructor( getMorePostsInternal(false) } - fun refreshPosts() { - apiPage = 1 - getMorePostsInternal(true) - } - private fun getMorePostsInternal(firstLoad: Boolean) { viewModelScope.launch(coroutineExceptionHandler) { val newPosts = lobstersApi.getHottestPosts(apiPage) - .transformLikedFlag() .toList() if (firstLoad) { _posts.value = newPosts @@ -79,7 +73,6 @@ class LobstersViewModel @ViewModelInject constructor( viewModelScope.launch { savedPostsDao.insertPosts(post) getSavedPosts() - _posts.value = _posts.value.transformLikedFlag().toList() } } @@ -87,11 +80,6 @@ class LobstersViewModel @ViewModelInject constructor( viewModelScope.launch { savedPostsDao.deletePostById(post.shortId) getSavedPosts() - _posts.value = _posts.value.transformLikedFlag().toList() } } - - private suspend fun List.transformLikedFlag() = map { - it.apply { isLiked = savedPostsDao.isLiked(shortId) } - } } diff --git a/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt b/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt index 5feb2f92..f6d947bd 100644 --- a/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt +++ b/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt @@ -23,5 +23,4 @@ class LobstersPost( @Json(name = "submitter_user") val submitterUser: Submitter, val tags: List, - var isLiked: Boolean = false, ) From 78f15ac7d943da4c98af0c655b6e33514dcb071b Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Nov 2020 01:10:19 +0530 Subject: [PATCH 4/5] Use enum for swipe states Signed-off-by: Harsh Shandilya --- .../dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt index a767814c..b43c71c2 100644 --- a/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt +++ b/app/src/main/java/dev/msfjarvis/lobsters/ui/posts/LobstersItem.kt @@ -34,6 +34,11 @@ import dev.msfjarvis.lobsters.model.Submitter import dev.msfjarvis.lobsters.ui.theme.LobstersTheme import dev.msfjarvis.lobsters.ui.theme.titleColor +private enum class SwipeState { + NotSwiped, + FullySwiped, +} + @Composable fun LazyItemScope.LobstersItem( post: LobstersPost, @@ -45,11 +50,11 @@ fun LazyItemScope.LobstersItem( val width = with(DensityAmbient.current) { ConfigurationAmbient.current.screenWidthDp.toDp().toPx() } - val swipeableState = rememberSwipeableState("Not Swiped") - val anchors = mapOf(0f to "Not Swiped", width to "Fully Swiped") + val swipeableState = rememberSwipeableState(SwipeState.NotSwiped) + val anchors = mapOf(0f to SwipeState.NotSwiped, width to SwipeState.FullySwiped) if (swipeableState.offset.value >= (width / 2)) { saveAction.invoke(post) - swipeableState.animateTo("Not Swiped") + swipeableState.animateTo(SwipeState.NotSwiped) } Column( From b84d6ac2ef4cb18ec70911d85672fd53a51bbbdb Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Mon, 2 Nov 2020 01:35:00 +0530 Subject: [PATCH 5/5] model: add back unused variable for db compat Signed-off-by: Harsh Shandilya --- .../src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt b/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt index f6d947bd..c379b440 100644 --- a/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt +++ b/model/src/main/java/dev/msfjarvis/lobsters/model/LobstersPost.kt @@ -23,4 +23,6 @@ class LobstersPost( @Json(name = "submitter_user") val submitterUser: Submitter, val tags: List, + @Deprecated("Retained for database compatibility as I am too lazy to write migrations") + val isLiked: Boolean = false, )