feat: intercept bookmark action on ForYou screen to show note dialog

Co-Authored-By: Claude <noreply@anthropic.com>
pull/2125/head
Rohit Karadkar 2 weeks ago
parent 06fbc6021e
commit cbb47d25ec

@ -65,6 +65,10 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import com.google.samples.apps.nowinandroid.core.ui.BookmarkNoteDialog
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.toArgb
@ -116,6 +120,8 @@ fun ForYouScreen(
val isSyncing by viewModel.isSyncing.collectAsStateWithLifecycle()
val deepLinkedUserNewsResource by viewModel.deepLinkedNewsResource.collectAsStateWithLifecycle()
var pendingBookmarkId by remember { mutableStateOf<String?>(null) }
ForYouScreen(
isSyncing = isSyncing,
onboardingUiState = onboardingUiState,
@ -125,10 +131,25 @@ fun ForYouScreen(
onDeepLinkOpened = viewModel::onDeepLinkOpened,
onTopicClick = onTopicClick,
saveFollowedTopics = viewModel::dismissOnboarding,
onNewsResourcesCheckedChanged = viewModel::updateNewsResourceSaved,
onNewsResourcesCheckedChanged = { id, checked ->
if (checked) {
pendingBookmarkId = id
} else {
viewModel.updateNewsResourceSaved(id, false)
}
},
onNewsResourceViewed = { viewModel.setNewsResourceViewed(it, true) },
modifier = modifier,
)
pendingBookmarkId?.let { id ->
BookmarkNoteDialog(
onDismiss = { note ->
viewModel.bookmarkWithNote(id, note)
pendingBookmarkId = null
},
)
}
}
@Composable

@ -121,6 +121,15 @@ class ForYouViewModel @Inject constructor(
}
}
fun bookmarkWithNote(newsResourceId: String, note: String) {
viewModelScope.launch {
userDataRepository.setNewsResourceBookmarked(newsResourceId, true)
if (note.isNotBlank()) {
userDataRepository.setBookmarkNote(newsResourceId, note)
}
}
}
fun setNewsResourceViewed(newsResourceId: String, viewed: Boolean) {
viewModelScope.launch {
userDataRepository.setNewsResourceViewed(newsResourceId, viewed)

Loading…
Cancel
Save