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 1 week ago
parent ad557a39cf
commit 83fe0bdc51

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

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

Loading…
Cancel
Save