navigating to browse the topic on NiaTopicTag click

pull/429/head^2
yveskalume 3 years ago
parent 14fab9296e
commit d4fdf86807

@ -518,37 +518,18 @@ fun NiaCatalog() {
item { Text("Tags", Modifier.padding(top = 16.dp)) } item { Text("Tags", Modifier.padding(top = 16.dp)) }
item { item {
FlowRow(mainAxisSpacing = 16.dp) { FlowRow(mainAxisSpacing = 16.dp) {
var expandedTopicId by remember { mutableStateOf<String?>(null) }
var firstFollowed by remember { mutableStateOf(false) } var firstFollowed by remember { mutableStateOf(false) }
NiaTopicTag( NiaTopicTag(
expanded = expandedTopicId == "Topic 1",
followed = firstFollowed, followed = firstFollowed,
onDropMenuToggle = { show ->
expandedTopicId = if (show) "Topic 1" else null
},
onFollowClick = { firstFollowed = true },
onUnfollowClick = { firstFollowed = false },
onBrowseClick = {}, onBrowseClick = {},
text = { Text(text = "Topic 1".uppercase()) }, text = { Text(text = "Topic 1".uppercase()) },
followText = { Text(text = "Follow") },
unFollowText = { Text(text = "Unfollow") },
browseText = { Text(text = "Browse topic") }
) )
var secondFollowed by remember { mutableStateOf(true) } var secondFollowed by remember { mutableStateOf(true) }
NiaTopicTag( NiaTopicTag(
expanded = expandedTopicId == "Topic 2",
followed = secondFollowed, followed = secondFollowed,
onDropMenuToggle = { show ->
expandedTopicId = if (show) "Topic 2" else null
},
onFollowClick = { secondFollowed = true },
onUnfollowClick = { secondFollowed = false },
onBrowseClick = {}, onBrowseClick = {},
text = { Text(text = "Topic 2".uppercase()) }, text = { Text(text = "Topic 2".uppercase()) },
followText = { Text(text = "Follow") },
unFollowText = { Text(text = "Unfollow") },
browseText = { Text(text = "Browse topic") }
) )
} }
} }

@ -18,28 +18,18 @@ package com.google.samples.apps.nowinandroid.core.designsystem.component
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.material3.contentColorFor import androidx.compose.material3.contentColorFor
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import com.google.samples.apps.nowinandroid.core.designsystem.R
@Composable @Composable
fun NiaTopicTag( fun NiaTopicTag(
expanded: Boolean = false,
followed: Boolean, followed: Boolean,
onDropMenuToggle: (show: Boolean) -> Unit = {},
onFollowClick: () -> Unit,
onUnfollowClick: () -> Unit,
onBrowseClick: () -> Unit, onBrowseClick: () -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
enabled: Boolean = true, enabled: Boolean = true,
text: @Composable () -> Unit, text: @Composable () -> Unit,
followText: @Composable () -> Unit = { Text(stringResource(R.string.follow)) },
unFollowText: @Composable () -> Unit = { Text(stringResource(R.string.unfollow)) },
browseText: @Composable () -> Unit = { Text(stringResource(R.string.browse_topic)) }
) { ) {
Box(modifier = modifier) { Box(modifier = modifier) {
@ -49,7 +39,7 @@ fun NiaTopicTag(
MaterialTheme.colorScheme.surfaceVariant MaterialTheme.colorScheme.surfaceVariant
} }
NiaTextButton( NiaTextButton(
onClick = { onDropMenuToggle(true) }, onClick = onBrowseClick,
enabled = enabled, enabled = enabled,
small = true, small = true,
colors = NiaButtonDefaults.textButtonColors( colors = NiaButtonDefaults.textButtonColors(
@ -65,28 +55,5 @@ fun NiaTopicTag(
), ),
text = text text = text
) )
NiaDropdownMenu(
expanded = expanded,
onDismissRequest = { onDropMenuToggle(false) },
items = if (followed) listOf(UNFOLLOW, BROWSE) else listOf(FOLLOW, BROWSE),
onItemClick = { item ->
when (item) {
FOLLOW -> onFollowClick()
UNFOLLOW -> onUnfollowClick()
BROWSE -> onBrowseClick()
} }
},
itemText = { item ->
when (item) {
FOLLOW -> followText()
UNFOLLOW -> unFollowText()
BROWSE -> browseText()
} }
}
)
}
}
private const val FOLLOW = 1
private const val UNFOLLOW = 2
private const val BROWSE = 3

@ -43,8 +43,6 @@ import com.google.samples.apps.nowinandroid.core.model.data.previewNewsResources
fun LazyGridScope.newsFeed( fun LazyGridScope.newsFeed(
feedState: NewsFeedUiState, feedState: NewsFeedUiState,
onNewsResourcesCheckedChanged: (String, Boolean) -> Unit, onNewsResourcesCheckedChanged: (String, Boolean) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
) { ) {
when (feedState) { when (feedState) {
@ -68,8 +66,6 @@ fun LazyGridScope.newsFeed(
) )
}, },
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic
) )
} }
} }
@ -105,8 +101,6 @@ fun NewsFeedLoadingPreview() {
feedState = NewsFeedUiState.Loading, feedState = NewsFeedUiState.Loading,
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = {}, onBrowseTopic = {},
onFollowTopic = {},
onUnfollowTopic = {}
) )
} }
} }
@ -129,8 +123,6 @@ fun NewsFeedContentPreview() {
), ),
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = {}, onBrowseTopic = {},
onFollowTopic = {},
onUnfollowTopic = {}
) )
} }
} }

@ -83,8 +83,6 @@ fun NewsResourceCardExpanded(
isBookmarked: Boolean, isBookmarked: Boolean,
onToggleBookmark: () -> Unit, onToggleBookmark: () -> Unit,
onClick: () -> Unit, onClick: () -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
@ -129,8 +127,6 @@ fun NewsResourceCardExpanded(
NewsResourceTopics( NewsResourceTopics(
topics = newsResource.topics, topics = newsResource.topics,
onBrowseClick = onBrowseTopic, onBrowseClick = onBrowseTopic,
onFollowClick = onFollowTopic,
onUnfollowClick = onUnfollowTopic
) )
} }
} }
@ -275,28 +271,16 @@ fun NewsResourceShortDescription(
@Composable @Composable
fun NewsResourceTopics( fun NewsResourceTopics(
topics: List<Topic>, topics: List<Topic>,
onFollowClick: (String) -> Unit,
onUnfollowClick: (String) -> Unit,
onBrowseClick: (String) -> Unit, onBrowseClick: (String) -> Unit,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
// Store the ID of the Topic which has its "following" menu expanded, if any.
// To avoid UI confusion, only one topic can have an expanded menu at a time.
var expandedTopicId by remember { mutableStateOf<String?>(null) }
Row( Row(
modifier = modifier.horizontalScroll(rememberScrollState()), // causes narrow chips modifier = modifier.horizontalScroll(rememberScrollState()), // causes narrow chips
horizontalArrangement = Arrangement.spacedBy(4.dp), horizontalArrangement = Arrangement.spacedBy(4.dp),
) { ) {
for (topic in topics) { for (topic in topics) {
NiaTopicTag( NiaTopicTag(
expanded = expandedTopicId == topic.id,
followed = true, // ToDo: Check if topic is followed followed = true, // ToDo: Check if topic is followed
onDropMenuToggle = { show ->
expandedTopicId = if (show) topic.id else null
},
onFollowClick = { onFollowClick(topic.id) },
onUnfollowClick = { onUnfollowClick(topic.id) },
onBrowseClick = { onBrowseClick(topic.id) }, onBrowseClick = { onBrowseClick(topic.id) },
text = { Text(text = topic.name.uppercase(Locale.getDefault())) } text = { Text(text = topic.name.uppercase(Locale.getDefault())) }
) )
@ -335,8 +319,6 @@ fun ExpandedNewsResourcePreview() {
onToggleBookmark = {}, onToggleBookmark = {},
onClick = {}, onClick = {},
onBrowseTopic = {}, onBrowseTopic = {},
onFollowTopic = {},
onUnfollowTopic = {}
) )
} }
} }

@ -40,8 +40,6 @@ fun <T> LazyListScope.newsResourceCardItems(
newsResourceMapper: (item: T) -> NewsResource, newsResourceMapper: (item: T) -> NewsResource,
isBookmarkedMapper: (item: T) -> Boolean, isBookmarkedMapper: (item: T) -> Boolean,
onToggleBookmark: (item: T) -> Unit, onToggleBookmark: (item: T) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
onItemClick: ((item: T) -> Unit)? = null, onItemClick: ((item: T) -> Unit)? = null,
itemModifier: Modifier = Modifier, itemModifier: Modifier = Modifier,
@ -59,8 +57,6 @@ fun <T> LazyListScope.newsResourceCardItems(
isBookmarked = isBookmarkedMapper(item), isBookmarked = isBookmarkedMapper(item),
onToggleBookmark = { onToggleBookmark(item) }, onToggleBookmark = { onToggleBookmark(item) },
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic,
onClick = { onClick = {
when (onItemClick) { when (onItemClick) {
null -> ContextCompat.startActivity(context, launchResourceIntent, null) null -> ContextCompat.startActivity(context, launchResourceIntent, null)

@ -59,8 +59,6 @@ class AuthorScreenTest {
onFollowClick = { }, onFollowClick = { },
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
@ -80,8 +78,6 @@ class AuthorScreenTest {
onFollowClick = { }, onFollowClick = { },
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
@ -113,8 +109,6 @@ class AuthorScreenTest {
onFollowClick = { }, onFollowClick = { },
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
@ -142,8 +136,6 @@ class AuthorScreenTest {
onFollowClick = { }, onFollowClick = { },
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }

@ -82,12 +82,6 @@ internal fun AuthorRoute(
onFollowClick = viewModel::followAuthorToggle, onFollowClick = viewModel::followAuthorToggle,
onBookmarkChanged = viewModel::bookmarkNews, onBookmarkChanged = viewModel::bookmarkNews,
onBrowseTopic = navigateToTopic, onBrowseTopic = navigateToTopic,
onFollowTopic = { topicId ->
viewModel.followTopic(topicId, true)
},
onUnfollowTopic = { topicId ->
viewModel.followTopic(topicId, false)
},
) )
} }
@ -99,8 +93,6 @@ internal fun AuthorScreen(
onBackClick: () -> Unit, onBackClick: () -> Unit,
onFollowClick: (Boolean) -> Unit, onFollowClick: (Boolean) -> Unit,
onBookmarkChanged: (String, Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
@ -139,8 +131,6 @@ internal fun AuthorScreen(
news = newsUiState, news = newsUiState,
onBookmarkChanged = onBookmarkChanged, onBookmarkChanged = onBookmarkChanged,
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic
) )
} }
} }
@ -154,8 +144,6 @@ private fun LazyListScope.authorBody(
author: Author, author: Author,
news: NewsUiState, news: NewsUiState,
onBookmarkChanged: (String, Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
) { ) {
item { item {
@ -166,8 +154,6 @@ private fun LazyListScope.authorBody(
news = news, news = news,
onBookmarkChanged = onBookmarkChanged, onBookmarkChanged = onBookmarkChanged,
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic
) )
} }
@ -200,8 +186,6 @@ private fun AuthorHeader(author: Author) {
private fun LazyListScope.authorCards( private fun LazyListScope.authorCards(
news: NewsUiState, news: NewsUiState,
onBookmarkChanged: (String, Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
) { ) {
when (news) { when (news) {
@ -212,8 +196,6 @@ private fun LazyListScope.authorCards(
isBookmarkedMapper = { it.isSaved }, isBookmarkedMapper = { it.isSaved },
onToggleBookmark = { onBookmarkChanged(it.newsResource.id, !it.isSaved) }, onToggleBookmark = { onBookmarkChanged(it.newsResource.id, !it.isSaved) },
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic,
itemModifier = Modifier.padding(24.dp) itemModifier = Modifier.padding(24.dp)
) )
} }
@ -282,8 +264,6 @@ fun AuthorScreenPopulated() {
onFollowClick = {}, onFollowClick = {},
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -301,8 +281,6 @@ fun AuthorScreenLoading() {
onFollowClick = {}, onFollowClick = {},
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }

@ -80,12 +80,6 @@ class AuthorViewModel @Inject constructor(
userDataRepository.updateNewsResourceBookmark(newsResourceId, bookmarked) userDataRepository.updateNewsResourceBookmark(newsResourceId, bookmarked)
} }
} }
fun followTopic(followedTopicId: String, followed: Boolean) {
viewModelScope.launch {
userDataRepository.toggleFollowedTopicId(followedTopicId, followed)
}
}
} }
private fun authorUiStateStream( private fun authorUiStateStream(

@ -54,8 +54,6 @@ class BookmarksScreenTest {
feedState = NewsFeedUiState.Loading, feedState = NewsFeedUiState.Loading,
removeFromBookmarks = { }, removeFromBookmarks = { },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
@ -78,8 +76,6 @@ class BookmarksScreenTest {
), ),
removeFromBookmarks = { }, removeFromBookmarks = { },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
@ -123,8 +119,6 @@ class BookmarksScreenTest {
removeFromBookmarksCalled = true removeFromBookmarksCalled = true
}, },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }

@ -58,12 +58,6 @@ internal fun BookmarksRoute(
removeFromBookmarks = viewModel::removeFromSavedResources, removeFromBookmarks = viewModel::removeFromSavedResources,
modifier = modifier, modifier = modifier,
onBrowseTopic = navigateToTopic, onBrowseTopic = navigateToTopic,
onFollowTopic = { topicId ->
viewModel.followTopic(topicId, true)
},
onUnfollowTopic = { topicId ->
viewModel.followTopic(topicId, false)
}
) )
} }
@ -72,8 +66,6 @@ internal fun BookmarksRoute(
fun BookmarksScreen( fun BookmarksScreen(
feedState: NewsFeedUiState, feedState: NewsFeedUiState,
removeFromBookmarks: (String) -> Unit, removeFromBookmarks: (String) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
modifier: Modifier = Modifier modifier: Modifier = Modifier
) { ) {
@ -105,8 +97,6 @@ fun BookmarksScreen(
feedState = feedState, feedState = feedState,
onNewsResourcesCheckedChanged = { id, _ -> removeFromBookmarks(id) }, onNewsResourcesCheckedChanged = { id, _ -> removeFromBookmarks(id) },
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic
) )
item(span = { GridItemSpan(maxLineSpan) }) { item(span = { GridItemSpan(maxLineSpan) }) {

@ -55,10 +55,4 @@ class BookmarksViewModel @Inject constructor(
userDataRepository.updateNewsResourceBookmark(newsResourceId, false) userDataRepository.updateNewsResourceBookmark(newsResourceId, false)
} }
} }
fun followTopic(followedTopicId: String, followed: Boolean) {
viewModelScope.launch {
userDataRepository.toggleFollowedTopicId(followedTopicId, followed)
}
}
} }

@ -61,8 +61,6 @@ class ForYouScreenTest {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -87,8 +85,6 @@ class ForYouScreenTest {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -119,8 +115,6 @@ class ForYouScreenTest {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -174,8 +168,6 @@ class ForYouScreenTest {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -229,8 +221,6 @@ class ForYouScreenTest {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -279,8 +269,6 @@ class ForYouScreenTest {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -305,8 +293,6 @@ class ForYouScreenTest {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -334,8 +320,6 @@ class ForYouScreenTest {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }

@ -108,12 +108,6 @@ internal fun ForYouRoute(
saveFollowedTopics = viewModel::dismissOnboarding, saveFollowedTopics = viewModel::dismissOnboarding,
onNewsResourcesCheckedChanged = viewModel::updateNewsResourceSaved, onNewsResourcesCheckedChanged = viewModel::updateNewsResourceSaved,
onBrowseTopic = navigateToTopic, onBrowseTopic = navigateToTopic,
onFollowTopic = { topicId ->
viewModel.followTopic(topicId, true)
},
onUnfollowTopic = { topicId ->
viewModel.followTopic(topicId, false)
},
modifier = modifier modifier = modifier
) )
} }
@ -127,8 +121,6 @@ internal fun ForYouScreen(
onAuthorCheckedChanged: (String, Boolean) -> Unit, onAuthorCheckedChanged: (String, Boolean) -> Unit,
saveFollowedTopics: () -> Unit, saveFollowedTopics: () -> Unit,
onNewsResourcesCheckedChanged: (String, Boolean) -> Unit, onNewsResourcesCheckedChanged: (String, Boolean) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
@ -190,8 +182,6 @@ internal fun ForYouScreen(
feedState = feedState, feedState = feedState,
onNewsResourcesCheckedChanged = onNewsResourcesCheckedChanged, onNewsResourcesCheckedChanged = onNewsResourcesCheckedChanged,
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic
) )
item(span = { GridItemSpan(maxLineSpan) }) { item(span = { GridItemSpan(maxLineSpan) }) {
@ -421,8 +411,6 @@ fun ForYouScreenPopulatedFeed() {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = {}, onBrowseTopic = {},
onFollowTopic = {},
onUnfollowTopic = {}
) )
} }
} }
@ -446,8 +434,6 @@ fun ForYouScreenOfflinePopulatedFeed() {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = {}, onBrowseTopic = {},
onFollowTopic = {},
onUnfollowTopic = {}
) )
} }
} }
@ -474,8 +460,6 @@ fun ForYouScreenTopicSelection() {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = {}, onBrowseTopic = {},
onFollowTopic = {},
onUnfollowTopic = {}
) )
} }
} }
@ -495,8 +479,6 @@ fun ForYouScreenLoading() {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = {}, onBrowseTopic = {},
onFollowTopic = {},
onUnfollowTopic = {}
) )
} }
} }
@ -520,8 +502,6 @@ fun ForYouScreenPopulatedAndLoading() {
saveFollowedTopics = {}, saveFollowedTopics = {},
onNewsResourcesCheckedChanged = { _, _ -> }, onNewsResourcesCheckedChanged = { _, _ -> },
onBrowseTopic = {}, onBrowseTopic = {},
onFollowTopic = {},
onUnfollowTopic = {}
) )
} }
} }

@ -129,12 +129,6 @@ class ForYouViewModel @Inject constructor(
userDataRepository.setShouldHideOnboarding(true) userDataRepository.setShouldHideOnboarding(true)
} }
} }
fun followTopic(followedTopicId: String, followed: Boolean) {
viewModelScope.launch {
userDataRepository.toggleFollowedTopicId(followedTopicId, followed)
}
}
} }
private fun Flow<List<SaveableNewsResource>>.mapToFeedState(): Flow<NewsFeedUiState> = private fun Flow<List<SaveableNewsResource>>.mapToFeedState(): Flow<NewsFeedUiState> =

@ -63,8 +63,6 @@ class TopicScreenTest {
onFollowClick = { }, onFollowClick = { },
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
@ -84,8 +82,6 @@ class TopicScreenTest {
onFollowClick = { }, onFollowClick = { },
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
@ -117,8 +113,6 @@ class TopicScreenTest {
onFollowClick = { }, onFollowClick = { },
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
@ -146,8 +140,6 @@ class TopicScreenTest {
onFollowClick = { }, onFollowClick = { },
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }

@ -81,12 +81,6 @@ internal fun TopicRoute(
onFollowClick = viewModel::followTopicToggle, onFollowClick = viewModel::followTopicToggle,
onBookmarkChanged = viewModel::bookmarkNews, onBookmarkChanged = viewModel::bookmarkNews,
onBrowseTopic = navigateToTopic, onBrowseTopic = navigateToTopic,
onFollowTopic = { topicId ->
viewModel.followTopic(topicId, true)
},
onUnfollowTopic = { topicId ->
viewModel.followTopic(topicId, false)
},
) )
} }
@ -99,8 +93,6 @@ internal fun TopicScreen(
onFollowClick: (Boolean) -> Unit, onFollowClick: (Boolean) -> Unit,
onBookmarkChanged: (String, Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
) { ) {
val state = rememberLazyListState() val state = rememberLazyListState()
@ -136,8 +128,6 @@ internal fun TopicScreen(
imageUrl = topicUiState.followableTopic.topic.imageUrl, imageUrl = topicUiState.followableTopic.topic.imageUrl,
onBookmarkChanged = onBookmarkChanged, onBookmarkChanged = onBookmarkChanged,
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic,
) )
} }
} }
@ -154,8 +144,6 @@ private fun LazyListScope.TopicBody(
imageUrl: String, imageUrl: String,
onBookmarkChanged: (String, Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
) { ) {
// TODO: Show icon if available // TODO: Show icon if available
item { item {
@ -166,8 +154,6 @@ private fun LazyListScope.TopicBody(
news = news, news = news,
onBookmarkChanged = onBookmarkChanged, onBookmarkChanged = onBookmarkChanged,
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic,
) )
} }
@ -199,8 +185,6 @@ private fun LazyListScope.TopicCards(
news: NewsUiState, news: NewsUiState,
onBookmarkChanged: (String, Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit,
onBrowseTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit,
onFollowTopic: (String) -> Unit,
onUnfollowTopic: (String) -> Unit,
) { ) {
when (news) { when (news) {
is NewsUiState.Success -> { is NewsUiState.Success -> {
@ -210,8 +194,6 @@ private fun LazyListScope.TopicCards(
isBookmarkedMapper = { it.isSaved }, isBookmarkedMapper = { it.isSaved },
onToggleBookmark = { onBookmarkChanged(it.newsResource.id, !it.isSaved) }, onToggleBookmark = { onBookmarkChanged(it.newsResource.id, !it.isSaved) },
onBrowseTopic = onBrowseTopic, onBrowseTopic = onBrowseTopic,
onFollowTopic = onFollowTopic,
onUnfollowTopic = onUnfollowTopic,
itemModifier = Modifier.padding(24.dp) itemModifier = Modifier.padding(24.dp)
) )
} }
@ -236,8 +218,6 @@ private fun TopicBodyPreview() {
imageUrl = "", imageUrl = "",
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -299,8 +279,6 @@ fun TopicScreenPopulated() {
onFollowClick = {}, onFollowClick = {},
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }
@ -318,8 +296,6 @@ fun TopicScreenLoading() {
onFollowClick = {}, onFollowClick = {},
onBookmarkChanged = { _, _ -> }, onBookmarkChanged = { _, _ -> },
onBrowseTopic = { }, onBrowseTopic = { },
onFollowTopic = { },
onUnfollowTopic = { },
) )
} }
} }

@ -79,12 +79,6 @@ class TopicViewModel @Inject constructor(
} }
} }
fun followTopic(followedTopicId: String, followed: Boolean) {
viewModelScope.launch {
userDataRepository.toggleFollowedTopicId(followedTopicId, followed)
}
}
fun bookmarkNews(newsResourceId: String, bookmarked: Boolean) { fun bookmarkNews(newsResourceId: String, bookmarked: Boolean) {
viewModelScope.launch { viewModelScope.launch {
userDataRepository.updateNewsResourceBookmark(newsResourceId, bookmarked) userDataRepository.updateNewsResourceBookmark(newsResourceId, bookmarked)

Loading…
Cancel
Save