fix: move long-click to NewsResourceCardExpanded so it isn't consumed by Card's inner clickable

Co-Authored-By: Claude <noreply@anthropic.com>
pull/2125/head
Rohit Karadkar 3 months ago
parent ad557a39cf
commit 83fe0bdc51

@ -23,6 +23,7 @@ import android.view.View
import androidx.compose.foundation.Canvas import androidx.compose.foundation.Canvas
import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.draganddrop.dragAndDropSource import androidx.compose.foundation.draganddrop.dragAndDropSource
import androidx.compose.foundation.horizontalScroll import androidx.compose.foundation.horizontalScroll
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@ -95,6 +96,7 @@ fun NewsResourceCardExpanded(
onClick: () -> Unit, onClick: () -> Unit,
onTopicClick: (String) -> Unit, onTopicClick: (String) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
onLongClick: (() -> Unit)? = null,
) { ) {
val clickActionLabel = stringResource(R.string.core_ui_card_tap_action) val clickActionLabel = stringResource(R.string.core_ui_card_tap_action)
val sharingLabel = stringResource(R.string.core_ui_feed_sharing) val sharingLabel = stringResource(R.string.core_ui_feed_sharing)
@ -111,7 +113,6 @@ fun NewsResourceCardExpanded(
} }
Card( Card(
onClick = onClick,
shape = RoundedCornerShape(16.dp), shape = RoundedCornerShape(16.dp),
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface), colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.surface),
// Use custom label for accessibility services to communicate button's action to user. // Use custom label for accessibility services to communicate button's action to user.
@ -120,7 +121,11 @@ fun NewsResourceCardExpanded(
.semantics { .semantics {
onClick(label = clickActionLabel, action = null) onClick(label = clickActionLabel, action = null)
} }
.testTag("newsResourceCard:${userNewsResource.id}"), .testTag("newsResourceCard:${userNewsResource.id}")
.combinedClickable(
onClick = onClick,
onLongClick = onLongClick,
),
) { ) {
Column { Column {
if (!userNewsResource.headerImageUrl.isNullOrEmpty()) { if (!userNewsResource.headerImageUrl.isNullOrEmpty()) {

@ -21,7 +21,6 @@ import androidx.activity.compose.BackHandler
import androidx.annotation.VisibleForTesting import androidx.annotation.VisibleForTesting
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.combinedClickable
import androidx.compose.foundation.gestures.Orientation import androidx.compose.foundation.gestures.Orientation
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
@ -313,26 +312,16 @@ private fun BookmarksGrid(
Box( Box(
modifier = Modifier modifier = Modifier
.padding(horizontal = 8.dp) .padding(horizontal = 8.dp)
.animateItem() .animateItem(),
.combinedClickable(
onClick = {
if (isInSelectionMode) {
toggleSelection(userNewsResource.id)
}
},
onLongClick = {
if (!isInSelectionMode) {
enterSelectionMode(userNewsResource.id)
}
},
),
) { ) {
Column { Column {
NewsResourceCardExpanded( NewsResourceCardExpanded(
userNewsResource = userNewsResource, userNewsResource = userNewsResource,
isBookmarked = userNewsResource.isSaved, isBookmarked = userNewsResource.isSaved,
onClick = { onClick = {
if (!isInSelectionMode) { if (isInSelectionMode) {
toggleSelection(userNewsResource.id)
} else {
analyticsHelper.logNewsResourceOpened( analyticsHelper.logNewsResourceOpened(
newsResourceId = userNewsResource.id, newsResourceId = userNewsResource.id,
) )
@ -344,6 +333,9 @@ private fun BookmarksGrid(
onNewsResourceViewed(userNewsResource.id) onNewsResourceViewed(userNewsResource.id)
} }
}, },
onLongClick = {
if (!isInSelectionMode) enterSelectionMode(userNewsResource.id)
},
hasBeenViewed = userNewsResource.hasBeenViewed, hasBeenViewed = userNewsResource.hasBeenViewed,
onToggleBookmark = { if (!isInSelectionMode) removeFromBookmarks(userNewsResource.id) }, onToggleBookmark = { if (!isInSelectionMode) removeFromBookmarks(userNewsResource.id) },
onTopicClick = onTopicClick, onTopicClick = onTopicClick,

Loading…
Cancel
Save