Extract BookMark note

pull/2125/head
Rohit Karadkar 3 months ago
parent aa85a0500a
commit db8557d050

@ -97,6 +97,7 @@ fun NewsResourceCardExpanded(
onTopicClick: (String) -> Unit, onTopicClick: (String) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
onLongClick: (() -> Unit)? = null, onLongClick: (() -> Unit)? = null,
bookmarkNote: (@Composable () -> 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)
@ -156,6 +157,7 @@ fun NewsResourceCardExpanded(
Spacer(modifier = Modifier.weight(1f)) Spacer(modifier = Modifier.weight(1f))
BookmarkButton(isBookmarked, onToggleBookmark) BookmarkButton(isBookmarked, onToggleBookmark)
} }
bookmarkNote?.invoke()
Spacer(modifier = Modifier.height(14.dp)) Spacer(modifier = Modifier.height(14.dp))
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
if (!hasBeenViewed) { if (!hasBeenViewed) {

@ -323,52 +323,44 @@ private fun BookmarksGrid(
.padding(horizontal = 8.dp) .padding(horizontal = 8.dp)
.animateItem(), .animateItem(),
) { ) {
Column { NewsResourceCardExpanded(
NewsResourceCardExpanded( userNewsResource = userNewsResource,
userNewsResource = userNewsResource, isBookmarked = userNewsResource.isSaved,
isBookmarked = userNewsResource.isSaved, onClick = {
onClick = { if (isInSelectionMode) {
if (isInSelectionMode) { toggleSelection(userNewsResource.id)
toggleSelection(userNewsResource.id) } else {
} else { analyticsHelper.logNewsResourceOpened(
analyticsHelper.logNewsResourceOpened( newsResourceId = userNewsResource.id,
newsResourceId = userNewsResource.id, )
) launchCustomChromeTab(
launchCustomChromeTab( context,
context, Uri.parse(userNewsResource.url),
Uri.parse(userNewsResource.url), backgroundColor,
backgroundColor, )
) onNewsResourceViewed(userNewsResource.id)
onNewsResourceViewed(userNewsResource.id) }
} },
}, onLongClick = {
onLongClick = { if (!isInSelectionMode) enterSelectionMode(userNewsResource.id)
if (!isInSelectionMode) enterSelectionMode(userNewsResource.id) },
}, hasBeenViewed = userNewsResource.hasBeenViewed,
hasBeenViewed = userNewsResource.hasBeenViewed, onToggleBookmark = {
onToggleBookmark = { if (!isInSelectionMode) removeFromBookmarks(userNewsResource.id) }, if (!isInSelectionMode) removeFromBookmarks(
onTopicClick = onTopicClick, userNewsResource.id,
)
val note = userNewsResource.bookmarkNote
if (note != null) {
Text(
text = note,
style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier
.fillMaxWidth()
.then(
if (!isInSelectionMode) {
Modifier.clickable { onEditNote(userNewsResource.id) }
} else {
Modifier
},
),
) )
} },
} onTopicClick = onTopicClick,
bookmarkNote = userNewsResource.bookmarkNote?.let { note ->
{
UserNote(
note = note,
isInSelectionMode = isInSelectionMode,
onEditNote = { onEditNote(userNewsResource.id) },
)
}
},
)
if (isInSelectionMode) { if (isInSelectionMode) {
Checkbox( Checkbox(
checked = userNewsResource.id in selectedIds, checked = userNewsResource.id in selectedIds,
@ -403,6 +395,27 @@ private fun BookmarksGrid(
} }
} }
@Composable
private fun UserNote(
note: String,
isInSelectionMode: Boolean,
onEditNote: () -> Unit,
) {
Text(
text = note,
style = MaterialTheme.typography.bodyMedium,
color = MaterialTheme.colorScheme.onPrimaryContainer,
maxLines = 1,
overflow = TextOverflow.Ellipsis,
modifier = Modifier
.fillMaxWidth()
.padding(vertical = 8.dp)
.then(
if (!isInSelectionMode) Modifier.clickable(onClick = onEditNote) else Modifier,
),
)
}
@Composable @Composable
private fun EmptyState(modifier: Modifier = Modifier) { private fun EmptyState(modifier: Modifier = Modifier) {
Column( Column(

Loading…
Cancel
Save