From 58583535ffde583d7f6546f4969590bf27c53ace Mon Sep 17 00:00:00 2001 From: yveskalume Date: Sun, 13 Nov 2022 00:06:13 +0200 Subject: [PATCH 1/4] Add NiaTopicTag chip interaction --- .../nowinandroid/navigation/NiaNavHost.kt | 26 +++++++-- .../apps/nowinandroid/core/ui/NewsFeed.kt | 20 +++++-- .../nowinandroid/core/ui/NewsResourceCard.kt | 30 +++++++--- .../core/ui/NewsResourceCardList.kt | 6 ++ .../feature/author/AuthorScreenTest.kt | 12 ++++ .../feature/author/AuthorScreen.kt | 41 +++++++++++++- .../feature/author/AuthorViewModel.kt | 6 ++ .../author/navigation/AuthorNavigation.kt | 5 +- .../feature/bookmarks/BookmarksScreen.kt | 17 +++++- .../feature/bookmarks/BookmarksViewModel.kt | 6 ++ .../navigation/BookmarksNavigation.kt | 4 +- .../feature/foryou/ForYouScreen.kt | 39 +++++++++++-- .../feature/foryou/ForYouViewModel.kt | 6 ++ .../foryou/navigation/ForYouNavigation.kt | 4 +- .../feature/topic/TopicScreenTest.kt | 12 ++++ .../nowinandroid/feature/topic/TopicScreen.kt | 55 +++++++++++++++++-- .../feature/topic/TopicViewModel.kt | 6 ++ .../topic/navigation/TopicNavigation.kt | 5 +- 18 files changed, 261 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt index 10fafddd9..4c64998e9 100644 --- a/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt +++ b/app/src/main/java/com/google/samples/apps/nowinandroid/navigation/NiaNavHost.kt @@ -48,8 +48,16 @@ fun NiaNavHost( startDestination = startDestination, modifier = modifier, ) { - forYouScreen() - bookmarksScreen() + forYouScreen( + navigateToTopic = { topicId -> + navController.navigateToTopic(topicId) + } + ) + bookmarksScreen( + navigateToTopic = { topicId -> + navController.navigateToTopic(topicId) + } + ) interestsGraph( navigateToTopic = { topicId -> navController.navigateToTopic(topicId) @@ -58,8 +66,18 @@ fun NiaNavHost( navController.navigateToAuthor(authorId) }, nestedGraphs = { - topicScreen(onBackClick) - authorScreen(onBackClick) + topicScreen( + onBackClick = onBackClick, + navigateToTopic = { topicId -> + navController.navigateToTopic(topicId) + } + ) + authorScreen( + onBackClick = onBackClick, + navigateToTopic = { topicId -> + navController.navigateToTopic(topicId) + } + ) } ) } diff --git a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt index 32308bd63..c220bfc3a 100644 --- a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt +++ b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt @@ -42,7 +42,10 @@ import com.google.samples.apps.nowinandroid.core.model.data.previewNewsResources */ fun LazyGridScope.newsFeed( feedState: NewsFeedUiState, - onNewsResourcesCheckedChanged: (String, Boolean) -> Unit + onNewsResourcesCheckedChanged: (String, Boolean) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, + onBrowseTopic: (String) -> Unit, ) { when (feedState) { NewsFeedUiState.Loading -> Unit @@ -63,7 +66,10 @@ fun LazyGridScope.newsFeed( saveableNewsResource.newsResource.id, !saveableNewsResource.isSaved ) - } + }, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic ) } } @@ -97,7 +103,10 @@ fun NewsFeedLoadingPreview() { LazyVerticalGrid(columns = GridCells.Adaptive(300.dp)) { newsFeed( feedState = NewsFeedUiState.Loading, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = {}, + onFollowTopic = {}, + onUnfollowTopic = {} ) } } @@ -118,7 +127,10 @@ fun NewsFeedContentPreview() { ) } ), - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = {}, + onFollowTopic = {}, + onUnfollowTopic = {} ) } } diff --git a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt index 36e5ff60a..f7feca498 100644 --- a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt +++ b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt @@ -57,7 +57,6 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage -import com.google.samples.apps.nowinandroid.core.designsystem.R as DesignsystemR import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaToggleButton import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaTopicTag import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons @@ -66,11 +65,12 @@ import com.google.samples.apps.nowinandroid.core.model.data.Author import com.google.samples.apps.nowinandroid.core.model.data.NewsResource import com.google.samples.apps.nowinandroid.core.model.data.Topic import com.google.samples.apps.nowinandroid.core.model.data.previewNewsResources +import kotlinx.datetime.Instant +import kotlinx.datetime.toJavaInstant import java.time.ZoneId import java.time.format.DateTimeFormatter import java.util.Locale -import kotlinx.datetime.Instant -import kotlinx.datetime.toJavaInstant +import com.google.samples.apps.nowinandroid.core.designsystem.R as DesignsystemR /** * [NewsResource] card used on the following screens: For You, Saved @@ -83,6 +83,9 @@ fun NewsResourceCardExpanded( isBookmarked: Boolean, onToggleBookmark: () -> Unit, onClick: () -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, + onBrowseTopic: (String) -> Unit, modifier: Modifier = Modifier ) { val clickActionLabel = stringResource(R.string.card_tap_action) @@ -123,7 +126,12 @@ fun NewsResourceCardExpanded( Spacer(modifier = Modifier.height(12.dp)) NewsResourceShortDescription(newsResource.content) Spacer(modifier = Modifier.height(12.dp)) - NewsResourceTopics(newsResource.topics) + NewsResourceTopics( + topics = newsResource.topics, + onBrowseClick = onBrowseTopic, + onFollowClick = onFollowTopic, + onUnfollowClick = onUnfollowTopic + ) } } } @@ -267,6 +275,9 @@ fun NewsResourceShortDescription( @Composable fun NewsResourceTopics( topics: List, + onFollowClick: (String) -> Unit, + onUnfollowClick: (String) -> Unit, + onBrowseClick: (String) -> Unit, modifier: Modifier = Modifier ) { // Store the ID of the Topic which has its "following" menu expanded, if any. @@ -284,9 +295,9 @@ fun NewsResourceTopics( onDropMenuToggle = { show -> expandedTopicId = if (show) topic.id else null }, - onFollowClick = { }, // ToDo - onUnfollowClick = { }, // ToDo - onBrowseClick = { }, // ToDo + onFollowClick = { onFollowClick(topic.id) }, + onUnfollowClick = { onUnfollowClick(topic.id) }, + onBrowseClick = { onBrowseClick(topic.id) }, text = { Text(text = topic.name.uppercase(Locale.getDefault())) } ) } @@ -322,7 +333,10 @@ fun ExpandedNewsResourcePreview() { newsResource = previewNewsResources[0], isBookmarked = true, onToggleBookmark = {}, - onClick = {} + onClick = {}, + onBrowseTopic = {}, + onFollowTopic = {}, + onUnfollowTopic = {} ) } } diff --git a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCardList.kt b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCardList.kt index 25a7bd2dc..37096e2af 100644 --- a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCardList.kt +++ b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCardList.kt @@ -40,6 +40,9 @@ fun LazyListScope.newsResourceCardItems( newsResourceMapper: (item: T) -> NewsResource, isBookmarkedMapper: (item: T) -> Boolean, onToggleBookmark: (item: T) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, + onBrowseTopic: (String) -> Unit, onItemClick: ((item: T) -> Unit)? = null, itemModifier: Modifier = Modifier, ) = items( @@ -55,6 +58,9 @@ fun LazyListScope.newsResourceCardItems( newsResource = newsResource, isBookmarked = isBookmarkedMapper(item), onToggleBookmark = { onToggleBookmark(item) }, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic, onClick = { when (onItemClick) { null -> ContextCompat.startActivity(context, launchResourceIntent, null) diff --git a/feature/author/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreenTest.kt b/feature/author/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreenTest.kt index b955912f2..438ef7cf7 100644 --- a/feature/author/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreenTest.kt +++ b/feature/author/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreenTest.kt @@ -58,6 +58,9 @@ class AuthorScreenTest { onBackClick = { }, onFollowClick = { }, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } @@ -76,6 +79,9 @@ class AuthorScreenTest { onBackClick = { }, onFollowClick = { }, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } @@ -106,6 +112,9 @@ class AuthorScreenTest { onBackClick = { }, onFollowClick = { }, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } @@ -132,6 +141,9 @@ class AuthorScreenTest { onBackClick = { }, onFollowClick = { }, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } diff --git a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt index 114b4c438..2fc629a3c 100644 --- a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt +++ b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt @@ -67,6 +67,7 @@ import com.google.samples.apps.nowinandroid.core.ui.newsResourceCardItems @Composable internal fun AuthorRoute( onBackClick: () -> Unit, + navigateToTopic: (String) -> Unit, modifier: Modifier = Modifier, viewModel: AuthorViewModel = hiltViewModel(), ) { @@ -80,6 +81,13 @@ internal fun AuthorRoute( onBackClick = onBackClick, onFollowClick = viewModel::followAuthorToggle, onBookmarkChanged = viewModel::bookmarkNews, + onBrowseTopic = navigateToTopic, + onFollowTopic = { topicId -> + viewModel.followTopic(topicId, true) + }, + onUnfollowTopic = { topicId -> + viewModel.followTopic(topicId, false) + }, ) } @@ -91,6 +99,9 @@ internal fun AuthorScreen( onBackClick: () -> Unit, onFollowClick: (Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, + onBrowseTopic: (String) -> Unit, modifier: Modifier = Modifier, ) { val scrollableState = rememberLazyListState() @@ -127,6 +138,9 @@ internal fun AuthorScreen( author = authorUiState.followableAuthor.author, news = newsUiState, onBookmarkChanged = onBookmarkChanged, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic ) } } @@ -139,13 +153,22 @@ internal fun AuthorScreen( private fun LazyListScope.authorBody( author: Author, news: NewsUiState, - onBookmarkChanged: (String, Boolean) -> Unit + onBookmarkChanged: (String, Boolean) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, + onBrowseTopic: (String) -> Unit, ) { item { AuthorHeader(author) } - authorCards(news, onBookmarkChanged) + authorCards( + news = news, + onBookmarkChanged = onBookmarkChanged, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic + ) } @Composable @@ -176,7 +199,10 @@ private fun AuthorHeader(author: Author) { private fun LazyListScope.authorCards( news: NewsUiState, - onBookmarkChanged: (String, Boolean) -> Unit + onBookmarkChanged: (String, Boolean) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, + onBrowseTopic: (String) -> Unit, ) { when (news) { is NewsUiState.Success -> { @@ -185,6 +211,9 @@ private fun LazyListScope.authorCards( newsResourceMapper = { it.newsResource }, isBookmarkedMapper = { it.isSaved }, onToggleBookmark = { onBookmarkChanged(it.newsResource.id, !it.isSaved) }, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic, itemModifier = Modifier.padding(24.dp) ) } @@ -252,6 +281,9 @@ fun AuthorScreenPopulated() { onBackClick = {}, onFollowClick = {}, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -268,6 +300,9 @@ fun AuthorScreenLoading() { onBackClick = {}, onFollowClick = {}, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } diff --git a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModel.kt b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModel.kt index 2f63dbc11..1dba9aa3b 100644 --- a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModel.kt +++ b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModel.kt @@ -80,6 +80,12 @@ class AuthorViewModel @Inject constructor( userDataRepository.updateNewsResourceBookmark(newsResourceId, bookmarked) } } + + fun followTopic(followedTopicId: String, followed: Boolean) { + viewModelScope.launch { + userDataRepository.toggleFollowedTopicId(followedTopicId, followed) + } + } } private fun authorUiStateStream( diff --git a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/navigation/AuthorNavigation.kt b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/navigation/AuthorNavigation.kt index 59b68ce91..d2b4b21b0 100644 --- a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/navigation/AuthorNavigation.kt +++ b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/navigation/AuthorNavigation.kt @@ -41,7 +41,8 @@ fun NavController.navigateToAuthor(authorId: String) { } fun NavGraphBuilder.authorScreen( - onBackClick: () -> Unit + onBackClick: () -> Unit, + navigateToTopic: (String) -> Unit, ) { composable( route = "author_route/{$authorIdArg}", @@ -49,6 +50,6 @@ fun NavGraphBuilder.authorScreen( navArgument(authorIdArg) { type = NavType.StringType } ) ) { - AuthorRoute(onBackClick = onBackClick) + AuthorRoute(onBackClick = onBackClick, navigateToTopic = navigateToTopic) } } diff --git a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt index 6c45c4314..0806d1100 100644 --- a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt +++ b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt @@ -49,13 +49,22 @@ import com.google.samples.apps.nowinandroid.core.ui.newsFeed @Composable internal fun BookmarksRoute( modifier: Modifier = Modifier, + navigateToTopic: (String) -> Unit, viewModel: BookmarksViewModel = hiltViewModel() ) { val feedState by viewModel.feedUiState.collectAsStateWithLifecycle() BookmarksScreen( feedState = feedState, removeFromBookmarks = viewModel::removeFromSavedResources, - modifier = modifier + modifier = modifier, + onBrowseTopic = navigateToTopic, + onFollowTopic = { topicId -> + viewModel.followTopic(topicId, true) + + }, + onUnfollowTopic = { topicId -> + viewModel.followTopic(topicId, false) + } ) } @@ -64,6 +73,9 @@ internal fun BookmarksRoute( fun BookmarksScreen( feedState: NewsFeedUiState, removeFromBookmarks: (String) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, + onBrowseTopic: (String) -> Unit, modifier: Modifier = Modifier ) { val scrollableState = rememberLazyGridState() @@ -93,6 +105,9 @@ fun BookmarksScreen( newsFeed( feedState = feedState, onNewsResourcesCheckedChanged = { id, _ -> removeFromBookmarks(id) }, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic ) item(span = { GridItemSpan(maxLineSpan) }) { diff --git a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt index 1b9efc6aa..4782d4ec1 100644 --- a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt +++ b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt @@ -55,4 +55,10 @@ class BookmarksViewModel @Inject constructor( userDataRepository.updateNewsResourceBookmark(newsResourceId, false) } } + + fun followTopic(followedTopicId: String, followed: Boolean) { + viewModelScope.launch { + userDataRepository.toggleFollowedTopicId(followedTopicId, followed) + } + } } diff --git a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt index 188c948e4..87a9e5aab 100644 --- a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt +++ b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/navigation/BookmarksNavigation.kt @@ -28,8 +28,8 @@ fun NavController.navigateToBookmarks(navOptions: NavOptions? = null) { this.navigate(bookmarksRoute, navOptions) } -fun NavGraphBuilder.bookmarksScreen() { +fun NavGraphBuilder.bookmarksScreen(navigateToTopic: (String) -> Unit) { composable(route = bookmarksRoute) { - BookmarksRoute() + BookmarksRoute(navigateToTopic = navigateToTopic) } } diff --git a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt index 4651e1204..c1a9a9c2b 100644 --- a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt +++ b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt @@ -92,6 +92,7 @@ import com.google.samples.apps.nowinandroid.core.ui.newsFeed @Composable internal fun ForYouRoute( modifier: Modifier = Modifier, + navigateToTopic: (String) -> Unit, viewModel: ForYouViewModel = hiltViewModel() ) { val onboardingUiState by viewModel.onboardingUiState.collectAsStateWithLifecycle() @@ -106,6 +107,13 @@ internal fun ForYouRoute( onAuthorCheckedChanged = viewModel::updateAuthorSelection, saveFollowedTopics = viewModel::dismissOnboarding, onNewsResourcesCheckedChanged = viewModel::updateNewsResourceSaved, + onBrowseTopic = navigateToTopic, + onFollowTopic = { topicId -> + viewModel.followTopic(topicId, true) + }, + onUnfollowTopic = { topicId -> + viewModel.followTopic(topicId, false) + }, modifier = modifier ) } @@ -119,6 +127,9 @@ internal fun ForYouScreen( onAuthorCheckedChanged: (String, Boolean) -> Unit, saveFollowedTopics: () -> Unit, onNewsResourcesCheckedChanged: (String, Boolean) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, + onBrowseTopic: (String) -> Unit, modifier: Modifier = Modifier, ) { @@ -178,6 +189,9 @@ internal fun ForYouScreen( newsFeed( feedState = feedState, onNewsResourcesCheckedChanged = onNewsResourcesCheckedChanged, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic ) item(span = { GridItemSpan(maxLineSpan) }) { @@ -405,7 +419,10 @@ fun ForYouScreenPopulatedFeed() { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = {}, + onFollowTopic = {}, + onUnfollowTopic = {} ) } } @@ -427,7 +444,10 @@ fun ForYouScreenOfflinePopulatedFeed() { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = {}, + onFollowTopic = {}, + onUnfollowTopic = {} ) } } @@ -452,7 +472,10 @@ fun ForYouScreenTopicSelection() { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = {}, + onFollowTopic = {}, + onUnfollowTopic = {} ) } } @@ -470,7 +493,10 @@ fun ForYouScreenLoading() { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = {}, + onFollowTopic = {}, + onUnfollowTopic = {} ) } } @@ -492,7 +518,10 @@ fun ForYouScreenPopulatedAndLoading() { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = {}, + onFollowTopic = {}, + onUnfollowTopic = {} ) } } diff --git a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt index c79c9d777..03fb44c07 100644 --- a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt +++ b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt @@ -129,6 +129,12 @@ class ForYouViewModel @Inject constructor( userDataRepository.setShouldHideOnboarding(true) } } + + fun followTopic(followedTopicId: String, followed: Boolean) { + viewModelScope.launch { + userDataRepository.toggleFollowedTopicId(followedTopicId, followed) + } + } } private fun Flow>.mapToFeedState(): Flow = diff --git a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt index f57deab90..9c3daaee2 100644 --- a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt +++ b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/navigation/ForYouNavigation.kt @@ -28,8 +28,8 @@ fun NavController.navigateToForYou(navOptions: NavOptions? = null) { this.navigate(forYouNavigationRoute, navOptions) } -fun NavGraphBuilder.forYouScreen() { +fun NavGraphBuilder.forYouScreen(navigateToTopic: (String) -> Unit,) { composable(route = forYouNavigationRoute) { - ForYouRoute() + ForYouRoute(navigateToTopic = navigateToTopic) } } diff --git a/feature/topic/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt b/feature/topic/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt index 0f20a5e5e..b78cecf7e 100644 --- a/feature/topic/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt +++ b/feature/topic/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt @@ -62,6 +62,9 @@ class TopicScreenTest { onBackClick = { }, onFollowClick = { }, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } @@ -80,6 +83,9 @@ class TopicScreenTest { onBackClick = { }, onFollowClick = { }, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } @@ -110,6 +116,9 @@ class TopicScreenTest { onBackClick = { }, onFollowClick = { }, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } @@ -136,6 +145,9 @@ class TopicScreenTest { onBackClick = { }, onFollowClick = { }, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } diff --git a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt index 58c572ade..434aff9a8 100644 --- a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt +++ b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt @@ -66,6 +66,7 @@ import com.google.samples.apps.nowinandroid.feature.topic.TopicUiState.Loading @Composable internal fun TopicRoute( onBackClick: () -> Unit, + navigateToTopic: (String) -> Unit, modifier: Modifier = Modifier, viewModel: TopicViewModel = hiltViewModel(), ) { @@ -79,6 +80,15 @@ internal fun TopicRoute( onBackClick = onBackClick, onFollowClick = viewModel::followTopicToggle, onBookmarkChanged = viewModel::bookmarkNews, + onBrowseTopic = navigateToTopic, + onFollowTopic = { topicId -> + viewModel.followTopic(topicId, true) + + }, + onUnfollowTopic = { topicId -> + viewModel.followTopic(topicId, false) + + }, ) } @@ -90,6 +100,9 @@ internal fun TopicScreen( onBackClick: () -> Unit, onFollowClick: (Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit, + onBrowseTopic: (String) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, modifier: Modifier = Modifier, ) { val state = rememberLazyListState() @@ -123,7 +136,10 @@ internal fun TopicScreen( description = topicUiState.followableTopic.topic.longDescription, news = newsUiState, imageUrl = topicUiState.followableTopic.topic.imageUrl, - onBookmarkChanged = onBookmarkChanged + onBookmarkChanged = onBookmarkChanged, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic, ) } } @@ -138,14 +154,23 @@ private fun LazyListScope.TopicBody( description: String, news: NewsUiState, imageUrl: String, - onBookmarkChanged: (String, Boolean) -> Unit + onBookmarkChanged: (String, Boolean) -> Unit, + onBrowseTopic: (String) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, ) { // TODO: Show icon if available item { TopicHeader(name, description, imageUrl) } - TopicCards(news, onBookmarkChanged) + TopicCards( + news = news, + onBookmarkChanged = onBookmarkChanged, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic, + ) } @Composable @@ -174,7 +199,10 @@ private fun TopicHeader(name: String, description: String, imageUrl: String) { private fun LazyListScope.TopicCards( news: NewsUiState, - onBookmarkChanged: (String, Boolean) -> Unit + onBookmarkChanged: (String, Boolean) -> Unit, + onBrowseTopic: (String) -> Unit, + onFollowTopic: (String) -> Unit, + onUnfollowTopic: (String) -> Unit, ) { when (news) { is NewsUiState.Success -> { @@ -183,6 +211,9 @@ private fun LazyListScope.TopicCards( newsResourceMapper = { it.newsResource }, isBookmarkedMapper = { it.isSaved }, onToggleBookmark = { onBookmarkChanged(it.newsResource.id, !it.isSaved) }, + onBrowseTopic = onBrowseTopic, + onFollowTopic = onFollowTopic, + onUnfollowTopic = onUnfollowTopic, itemModifier = Modifier.padding(24.dp) ) } @@ -201,8 +232,14 @@ private fun TopicBodyPreview() { NiaTheme { LazyColumn { TopicBody( - "Jetpack Compose", "Lorem ipsum maximum", - NewsUiState.Success(emptyList()), "", { _, _ -> } + name = "Jetpack Compose", + description = "Lorem ipsum maximum", + news = NewsUiState.Success(emptyList()), + imageUrl = "", + onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -263,6 +300,9 @@ fun TopicScreenPopulated() { onBackClick = {}, onFollowClick = {}, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -279,6 +319,9 @@ fun TopicScreenLoading() { onBackClick = {}, onFollowClick = {}, onBookmarkChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } diff --git a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt index 160bcfb3b..79d8853e6 100644 --- a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt +++ b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt @@ -79,6 +79,12 @@ class TopicViewModel @Inject constructor( } } + fun followTopic(followedTopicId: String, followed: Boolean) { + viewModelScope.launch { + userDataRepository.toggleFollowedTopicId(followedTopicId, followed) + } + } + fun bookmarkNews(newsResourceId: String, bookmarked: Boolean) { viewModelScope.launch { userDataRepository.updateNewsResourceBookmark(newsResourceId, bookmarked) diff --git a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt index 808143275..a0f4b2680 100644 --- a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt +++ b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/navigation/TopicNavigation.kt @@ -41,7 +41,8 @@ fun NavController.navigateToTopic(topicId: String) { } fun NavGraphBuilder.topicScreen( - onBackClick: () -> Unit + onBackClick: () -> Unit, + navigateToTopic: (String) -> Unit, ) { composable( route = "topic_route/{$topicIdArg}", @@ -49,6 +50,6 @@ fun NavGraphBuilder.topicScreen( navArgument(topicIdArg) { type = NavType.StringType } ) ) { - TopicRoute(onBackClick = onBackClick) + TopicRoute(onBackClick = onBackClick, navigateToTopic = navigateToTopic) } } From 589bfecb88953a30358f7fd12cca9db9cd0a777f Mon Sep 17 00:00:00 2001 From: yveskalume Date: Sun, 13 Nov 2022 00:26:55 +0200 Subject: [PATCH 2/4] fix format violations --- .../samples/apps/nowinandroid/core/ui/NewsResourceCard.kt | 6 +++--- .../apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt | 1 - .../samples/apps/nowinandroid/feature/topic/TopicScreen.kt | 2 -- 3 files changed, 3 insertions(+), 6 deletions(-) diff --git a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt index f7feca498..896dec35b 100644 --- a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt +++ b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt @@ -57,6 +57,7 @@ import androidx.compose.ui.semantics.semantics import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import coil.compose.AsyncImage +import com.google.samples.apps.nowinandroid.core.designsystem.R as DesignsystemR import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaToggleButton import com.google.samples.apps.nowinandroid.core.designsystem.component.NiaTopicTag import com.google.samples.apps.nowinandroid.core.designsystem.icon.NiaIcons @@ -65,12 +66,11 @@ import com.google.samples.apps.nowinandroid.core.model.data.Author import com.google.samples.apps.nowinandroid.core.model.data.NewsResource import com.google.samples.apps.nowinandroid.core.model.data.Topic import com.google.samples.apps.nowinandroid.core.model.data.previewNewsResources -import kotlinx.datetime.Instant -import kotlinx.datetime.toJavaInstant import java.time.ZoneId import java.time.format.DateTimeFormatter import java.util.Locale -import com.google.samples.apps.nowinandroid.core.designsystem.R as DesignsystemR +import kotlinx.datetime.Instant +import kotlinx.datetime.toJavaInstant /** * [NewsResource] card used on the following screens: For You, Saved diff --git a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt index 0806d1100..9bc7e6903 100644 --- a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt +++ b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt @@ -60,7 +60,6 @@ internal fun BookmarksRoute( onBrowseTopic = navigateToTopic, onFollowTopic = { topicId -> viewModel.followTopic(topicId, true) - }, onUnfollowTopic = { topicId -> viewModel.followTopic(topicId, false) diff --git a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt index 434aff9a8..9d2dcc8a3 100644 --- a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt +++ b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt @@ -83,11 +83,9 @@ internal fun TopicRoute( onBrowseTopic = navigateToTopic, onFollowTopic = { topicId -> viewModel.followTopic(topicId, true) - }, onUnfollowTopic = { topicId -> viewModel.followTopic(topicId, false) - }, ) } From 14fab9296e335419e2f7b52d91f4a2adbd4f0441 Mon Sep 17 00:00:00 2001 From: yveskalume Date: Mon, 14 Nov 2022 14:49:42 +0200 Subject: [PATCH 3/4] Make all tests pass --- .../feature/bookmarks/BookmarksScreenTest.kt | 15 +++++-- .../feature/foryou/ForYouScreenTest.kt | 40 +++++++++++++++---- 2 files changed, 44 insertions(+), 11 deletions(-) diff --git a/feature/bookmarks/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt b/feature/bookmarks/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt index f018be8c0..d382d294a 100644 --- a/feature/bookmarks/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt +++ b/feature/bookmarks/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt @@ -52,7 +52,10 @@ class BookmarksScreenTest { composeTestRule.setContent { BookmarksScreen( feedState = NewsFeedUiState.Loading, - removeFromBookmarks = { } + removeFromBookmarks = { }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } @@ -73,7 +76,10 @@ class BookmarksScreenTest { previewNewsResources.take(2) .map { SaveableNewsResource(it, true) } ), - removeFromBookmarks = { } + removeFromBookmarks = { }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } @@ -115,7 +121,10 @@ class BookmarksScreenTest { removeFromBookmarks = { newsResourceId -> assertEquals(previewNewsResources[0].id, newsResourceId) removeFromBookmarksCalled = true - } + }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } diff --git a/feature/foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt b/feature/foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt index d89f5d91f..07d9155f7 100644 --- a/feature/foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt +++ b/feature/foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt @@ -59,7 +59,10 @@ class ForYouScreenTest { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -82,7 +85,10 @@ class ForYouScreenTest { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -111,7 +117,10 @@ class ForYouScreenTest { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -163,7 +172,10 @@ class ForYouScreenTest { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -215,7 +227,10 @@ class ForYouScreenTest { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -262,7 +277,10 @@ class ForYouScreenTest { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -285,7 +303,10 @@ class ForYouScreenTest { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } } @@ -311,7 +332,10 @@ class ForYouScreenTest { onTopicCheckedChanged = { _, _ -> }, onAuthorCheckedChanged = { _, _ -> }, saveFollowedTopics = {}, - onNewsResourcesCheckedChanged = { _, _ -> } + onNewsResourcesCheckedChanged = { _, _ -> }, + onBrowseTopic = { }, + onFollowTopic = { }, + onUnfollowTopic = { }, ) } From d4fdf86807dd665f04b4dabf0357b19cf1396aab Mon Sep 17 00:00:00 2001 From: yveskalume Date: Thu, 17 Nov 2022 11:51:27 +0200 Subject: [PATCH 4/4] navigating to browse the topic on NiaTopicTag click --- .../samples/apps/niacatalog/ui/Catalog.kt | 19 ---------- .../core/designsystem/component/Tag.kt | 35 +------------------ .../apps/nowinandroid/core/ui/NewsFeed.kt | 8 ----- .../nowinandroid/core/ui/NewsResourceCard.kt | 18 ---------- .../core/ui/NewsResourceCardList.kt | 4 --- .../feature/author/AuthorScreenTest.kt | 8 ----- .../feature/author/AuthorScreen.kt | 22 ------------ .../feature/author/AuthorViewModel.kt | 6 ---- .../feature/bookmarks/BookmarksScreenTest.kt | 6 ---- .../feature/bookmarks/BookmarksScreen.kt | 10 ------ .../feature/bookmarks/BookmarksViewModel.kt | 6 ---- .../feature/foryou/ForYouScreenTest.kt | 16 --------- .../feature/foryou/ForYouScreen.kt | 20 ----------- .../feature/foryou/ForYouViewModel.kt | 6 ---- .../feature/topic/TopicScreenTest.kt | 8 ----- .../nowinandroid/feature/topic/TopicScreen.kt | 24 ------------- .../feature/topic/TopicViewModel.kt | 6 ---- 17 files changed, 1 insertion(+), 221 deletions(-) diff --git a/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt b/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt index 851c20b28..c84c97f8b 100644 --- a/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt +++ b/app-nia-catalog/src/main/java/com/google/samples/apps/niacatalog/ui/Catalog.kt @@ -518,37 +518,18 @@ fun NiaCatalog() { item { Text("Tags", Modifier.padding(top = 16.dp)) } item { FlowRow(mainAxisSpacing = 16.dp) { - var expandedTopicId by remember { mutableStateOf(null) } var firstFollowed by remember { mutableStateOf(false) } NiaTopicTag( - expanded = expandedTopicId == "Topic 1", followed = firstFollowed, - onDropMenuToggle = { show -> - expandedTopicId = if (show) "Topic 1" else null - }, - onFollowClick = { firstFollowed = true }, - onUnfollowClick = { firstFollowed = false }, onBrowseClick = {}, 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) } NiaTopicTag( - expanded = expandedTopicId == "Topic 2", followed = secondFollowed, - onDropMenuToggle = { show -> - expandedTopicId = if (show) "Topic 2" else null - }, - onFollowClick = { secondFollowed = true }, - onUnfollowClick = { secondFollowed = false }, onBrowseClick = {}, text = { Text(text = "Topic 2".uppercase()) }, - followText = { Text(text = "Follow") }, - unFollowText = { Text(text = "Unfollow") }, - browseText = { Text(text = "Browse topic") } ) } } diff --git a/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/component/Tag.kt b/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/component/Tag.kt index 6a2475931..9af4f39a1 100644 --- a/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/component/Tag.kt +++ b/core/designsystem/src/main/java/com/google/samples/apps/nowinandroid/core/designsystem/component/Tag.kt @@ -18,28 +18,18 @@ package com.google.samples.apps.nowinandroid.core.designsystem.component import androidx.compose.foundation.layout.Box import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Text import androidx.compose.material3.contentColorFor import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import androidx.compose.ui.res.stringResource -import com.google.samples.apps.nowinandroid.core.designsystem.R @Composable fun NiaTopicTag( - expanded: Boolean = false, followed: Boolean, - onDropMenuToggle: (show: Boolean) -> Unit = {}, - onFollowClick: () -> Unit, - onUnfollowClick: () -> Unit, onBrowseClick: () -> Unit, modifier: Modifier = Modifier, enabled: Boolean = true, 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) { @@ -49,7 +39,7 @@ fun NiaTopicTag( MaterialTheme.colorScheme.surfaceVariant } NiaTextButton( - onClick = { onDropMenuToggle(true) }, + onClick = onBrowseClick, enabled = enabled, small = true, colors = NiaButtonDefaults.textButtonColors( @@ -65,28 +55,5 @@ fun NiaTopicTag( ), 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 diff --git a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt index c220bfc3a..6ea75a88a 100644 --- a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt +++ b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsFeed.kt @@ -43,8 +43,6 @@ import com.google.samples.apps.nowinandroid.core.model.data.previewNewsResources fun LazyGridScope.newsFeed( feedState: NewsFeedUiState, onNewsResourcesCheckedChanged: (String, Boolean) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit, ) { when (feedState) { @@ -68,8 +66,6 @@ fun LazyGridScope.newsFeed( ) }, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic ) } } @@ -105,8 +101,6 @@ fun NewsFeedLoadingPreview() { feedState = NewsFeedUiState.Loading, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = {}, - onFollowTopic = {}, - onUnfollowTopic = {} ) } } @@ -129,8 +123,6 @@ fun NewsFeedContentPreview() { ), onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = {}, - onFollowTopic = {}, - onUnfollowTopic = {} ) } } diff --git a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt index 896dec35b..196f11412 100644 --- a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt +++ b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCard.kt @@ -83,8 +83,6 @@ fun NewsResourceCardExpanded( isBookmarked: Boolean, onToggleBookmark: () -> Unit, onClick: () -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit, modifier: Modifier = Modifier ) { @@ -129,8 +127,6 @@ fun NewsResourceCardExpanded( NewsResourceTopics( topics = newsResource.topics, onBrowseClick = onBrowseTopic, - onFollowClick = onFollowTopic, - onUnfollowClick = onUnfollowTopic ) } } @@ -275,28 +271,16 @@ fun NewsResourceShortDescription( @Composable fun NewsResourceTopics( topics: List, - onFollowClick: (String) -> Unit, - onUnfollowClick: (String) -> Unit, onBrowseClick: (String) -> Unit, 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(null) } - Row( modifier = modifier.horizontalScroll(rememberScrollState()), // causes narrow chips horizontalArrangement = Arrangement.spacedBy(4.dp), ) { for (topic in topics) { NiaTopicTag( - expanded = expandedTopicId == topic.id, 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) }, text = { Text(text = topic.name.uppercase(Locale.getDefault())) } ) @@ -335,8 +319,6 @@ fun ExpandedNewsResourcePreview() { onToggleBookmark = {}, onClick = {}, onBrowseTopic = {}, - onFollowTopic = {}, - onUnfollowTopic = {} ) } } diff --git a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCardList.kt b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCardList.kt index 37096e2af..617ebcf7b 100644 --- a/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCardList.kt +++ b/core/ui/src/main/java/com/google/samples/apps/nowinandroid/core/ui/NewsResourceCardList.kt @@ -40,8 +40,6 @@ fun LazyListScope.newsResourceCardItems( newsResourceMapper: (item: T) -> NewsResource, isBookmarkedMapper: (item: T) -> Boolean, onToggleBookmark: (item: T) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit, onItemClick: ((item: T) -> Unit)? = null, itemModifier: Modifier = Modifier, @@ -59,8 +57,6 @@ fun LazyListScope.newsResourceCardItems( isBookmarked = isBookmarkedMapper(item), onToggleBookmark = { onToggleBookmark(item) }, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic, onClick = { when (onItemClick) { null -> ContextCompat.startActivity(context, launchResourceIntent, null) diff --git a/feature/author/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreenTest.kt b/feature/author/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreenTest.kt index 438ef7cf7..21689d2c0 100644 --- a/feature/author/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreenTest.kt +++ b/feature/author/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreenTest.kt @@ -59,8 +59,6 @@ class AuthorScreenTest { onFollowClick = { }, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } @@ -80,8 +78,6 @@ class AuthorScreenTest { onFollowClick = { }, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } @@ -113,8 +109,6 @@ class AuthorScreenTest { onFollowClick = { }, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } @@ -142,8 +136,6 @@ class AuthorScreenTest { onFollowClick = { }, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } diff --git a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt index 2fc629a3c..c35fb9f54 100644 --- a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt +++ b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorScreen.kt @@ -82,12 +82,6 @@ internal fun AuthorRoute( onFollowClick = viewModel::followAuthorToggle, onBookmarkChanged = viewModel::bookmarkNews, onBrowseTopic = navigateToTopic, - onFollowTopic = { topicId -> - viewModel.followTopic(topicId, true) - }, - onUnfollowTopic = { topicId -> - viewModel.followTopic(topicId, false) - }, ) } @@ -99,8 +93,6 @@ internal fun AuthorScreen( onBackClick: () -> Unit, onFollowClick: (Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit, modifier: Modifier = Modifier, ) { @@ -139,8 +131,6 @@ internal fun AuthorScreen( news = newsUiState, onBookmarkChanged = onBookmarkChanged, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic ) } } @@ -154,8 +144,6 @@ private fun LazyListScope.authorBody( author: Author, news: NewsUiState, onBookmarkChanged: (String, Boolean) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit, ) { item { @@ -166,8 +154,6 @@ private fun LazyListScope.authorBody( news = news, onBookmarkChanged = onBookmarkChanged, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic ) } @@ -200,8 +186,6 @@ private fun AuthorHeader(author: Author) { private fun LazyListScope.authorCards( news: NewsUiState, onBookmarkChanged: (String, Boolean) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit, ) { when (news) { @@ -212,8 +196,6 @@ private fun LazyListScope.authorCards( isBookmarkedMapper = { it.isSaved }, onToggleBookmark = { onBookmarkChanged(it.newsResource.id, !it.isSaved) }, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic, itemModifier = Modifier.padding(24.dp) ) } @@ -282,8 +264,6 @@ fun AuthorScreenPopulated() { onFollowClick = {}, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -301,8 +281,6 @@ fun AuthorScreenLoading() { onFollowClick = {}, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } diff --git a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModel.kt b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModel.kt index 1dba9aa3b..2f63dbc11 100644 --- a/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModel.kt +++ b/feature/author/src/main/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModel.kt @@ -80,12 +80,6 @@ class AuthorViewModel @Inject constructor( userDataRepository.updateNewsResourceBookmark(newsResourceId, bookmarked) } } - - fun followTopic(followedTopicId: String, followed: Boolean) { - viewModelScope.launch { - userDataRepository.toggleFollowedTopicId(followedTopicId, followed) - } - } } private fun authorUiStateStream( diff --git a/feature/bookmarks/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt b/feature/bookmarks/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt index d382d294a..a4fe03101 100644 --- a/feature/bookmarks/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt +++ b/feature/bookmarks/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreenTest.kt @@ -54,8 +54,6 @@ class BookmarksScreenTest { feedState = NewsFeedUiState.Loading, removeFromBookmarks = { }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } @@ -78,8 +76,6 @@ class BookmarksScreenTest { ), removeFromBookmarks = { }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } @@ -123,8 +119,6 @@ class BookmarksScreenTest { removeFromBookmarksCalled = true }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } diff --git a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt index 9bc7e6903..466c13bc7 100644 --- a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt +++ b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksScreen.kt @@ -58,12 +58,6 @@ internal fun BookmarksRoute( removeFromBookmarks = viewModel::removeFromSavedResources, modifier = modifier, onBrowseTopic = navigateToTopic, - onFollowTopic = { topicId -> - viewModel.followTopic(topicId, true) - }, - onUnfollowTopic = { topicId -> - viewModel.followTopic(topicId, false) - } ) } @@ -72,8 +66,6 @@ internal fun BookmarksRoute( fun BookmarksScreen( feedState: NewsFeedUiState, removeFromBookmarks: (String) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit, modifier: Modifier = Modifier ) { @@ -105,8 +97,6 @@ fun BookmarksScreen( feedState = feedState, onNewsResourcesCheckedChanged = { id, _ -> removeFromBookmarks(id) }, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic ) item(span = { GridItemSpan(maxLineSpan) }) { diff --git a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt index 4782d4ec1..1b9efc6aa 100644 --- a/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt +++ b/feature/bookmarks/src/main/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModel.kt @@ -55,10 +55,4 @@ class BookmarksViewModel @Inject constructor( userDataRepository.updateNewsResourceBookmark(newsResourceId, false) } } - - fun followTopic(followedTopicId: String, followed: Boolean) { - viewModelScope.launch { - userDataRepository.toggleFollowedTopicId(followedTopicId, followed) - } - } } diff --git a/feature/foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt b/feature/foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt index 07d9155f7..194f31a1e 100644 --- a/feature/foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt +++ b/feature/foryou/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreenTest.kt @@ -61,8 +61,6 @@ class ForYouScreenTest { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -87,8 +85,6 @@ class ForYouScreenTest { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -119,8 +115,6 @@ class ForYouScreenTest { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -174,8 +168,6 @@ class ForYouScreenTest { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -229,8 +221,6 @@ class ForYouScreenTest { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -279,8 +269,6 @@ class ForYouScreenTest { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -305,8 +293,6 @@ class ForYouScreenTest { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -334,8 +320,6 @@ class ForYouScreenTest { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } diff --git a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt index c1a9a9c2b..99bec605f 100644 --- a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt +++ b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouScreen.kt @@ -108,12 +108,6 @@ internal fun ForYouRoute( saveFollowedTopics = viewModel::dismissOnboarding, onNewsResourcesCheckedChanged = viewModel::updateNewsResourceSaved, onBrowseTopic = navigateToTopic, - onFollowTopic = { topicId -> - viewModel.followTopic(topicId, true) - }, - onUnfollowTopic = { topicId -> - viewModel.followTopic(topicId, false) - }, modifier = modifier ) } @@ -127,8 +121,6 @@ internal fun ForYouScreen( onAuthorCheckedChanged: (String, Boolean) -> Unit, saveFollowedTopics: () -> Unit, onNewsResourcesCheckedChanged: (String, Boolean) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, onBrowseTopic: (String) -> Unit, modifier: Modifier = Modifier, ) { @@ -190,8 +182,6 @@ internal fun ForYouScreen( feedState = feedState, onNewsResourcesCheckedChanged = onNewsResourcesCheckedChanged, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic ) item(span = { GridItemSpan(maxLineSpan) }) { @@ -421,8 +411,6 @@ fun ForYouScreenPopulatedFeed() { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = {}, - onFollowTopic = {}, - onUnfollowTopic = {} ) } } @@ -446,8 +434,6 @@ fun ForYouScreenOfflinePopulatedFeed() { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = {}, - onFollowTopic = {}, - onUnfollowTopic = {} ) } } @@ -474,8 +460,6 @@ fun ForYouScreenTopicSelection() { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = {}, - onFollowTopic = {}, - onUnfollowTopic = {} ) } } @@ -495,8 +479,6 @@ fun ForYouScreenLoading() { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = {}, - onFollowTopic = {}, - onUnfollowTopic = {} ) } } @@ -520,8 +502,6 @@ fun ForYouScreenPopulatedAndLoading() { saveFollowedTopics = {}, onNewsResourcesCheckedChanged = { _, _ -> }, onBrowseTopic = {}, - onFollowTopic = {}, - onUnfollowTopic = {} ) } } diff --git a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt index 03fb44c07..c79c9d777 100644 --- a/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt +++ b/feature/foryou/src/main/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModel.kt @@ -129,12 +129,6 @@ class ForYouViewModel @Inject constructor( userDataRepository.setShouldHideOnboarding(true) } } - - fun followTopic(followedTopicId: String, followed: Boolean) { - viewModelScope.launch { - userDataRepository.toggleFollowedTopicId(followedTopicId, followed) - } - } } private fun Flow>.mapToFeedState(): Flow = diff --git a/feature/topic/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt b/feature/topic/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt index b78cecf7e..44fa4f3db 100644 --- a/feature/topic/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt +++ b/feature/topic/src/androidTest/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreenTest.kt @@ -63,8 +63,6 @@ class TopicScreenTest { onFollowClick = { }, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } @@ -84,8 +82,6 @@ class TopicScreenTest { onFollowClick = { }, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } @@ -117,8 +113,6 @@ class TopicScreenTest { onFollowClick = { }, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } @@ -146,8 +140,6 @@ class TopicScreenTest { onFollowClick = { }, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } diff --git a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt index 9d2dcc8a3..a037929d8 100644 --- a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt +++ b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicScreen.kt @@ -81,12 +81,6 @@ internal fun TopicRoute( onFollowClick = viewModel::followTopicToggle, onBookmarkChanged = viewModel::bookmarkNews, onBrowseTopic = navigateToTopic, - onFollowTopic = { topicId -> - viewModel.followTopic(topicId, true) - }, - onUnfollowTopic = { topicId -> - viewModel.followTopic(topicId, false) - }, ) } @@ -99,8 +93,6 @@ internal fun TopicScreen( onFollowClick: (Boolean) -> Unit, onBookmarkChanged: (String, Boolean) -> Unit, onBrowseTopic: (String) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, modifier: Modifier = Modifier, ) { val state = rememberLazyListState() @@ -136,8 +128,6 @@ internal fun TopicScreen( imageUrl = topicUiState.followableTopic.topic.imageUrl, onBookmarkChanged = onBookmarkChanged, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic, ) } } @@ -154,8 +144,6 @@ private fun LazyListScope.TopicBody( imageUrl: String, onBookmarkChanged: (String, Boolean) -> Unit, onBrowseTopic: (String) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, ) { // TODO: Show icon if available item { @@ -166,8 +154,6 @@ private fun LazyListScope.TopicBody( news = news, onBookmarkChanged = onBookmarkChanged, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic, ) } @@ -199,8 +185,6 @@ private fun LazyListScope.TopicCards( news: NewsUiState, onBookmarkChanged: (String, Boolean) -> Unit, onBrowseTopic: (String) -> Unit, - onFollowTopic: (String) -> Unit, - onUnfollowTopic: (String) -> Unit, ) { when (news) { is NewsUiState.Success -> { @@ -210,8 +194,6 @@ private fun LazyListScope.TopicCards( isBookmarkedMapper = { it.isSaved }, onToggleBookmark = { onBookmarkChanged(it.newsResource.id, !it.isSaved) }, onBrowseTopic = onBrowseTopic, - onFollowTopic = onFollowTopic, - onUnfollowTopic = onUnfollowTopic, itemModifier = Modifier.padding(24.dp) ) } @@ -236,8 +218,6 @@ private fun TopicBodyPreview() { imageUrl = "", onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -299,8 +279,6 @@ fun TopicScreenPopulated() { onFollowClick = {}, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } @@ -318,8 +296,6 @@ fun TopicScreenLoading() { onFollowClick = {}, onBookmarkChanged = { _, _ -> }, onBrowseTopic = { }, - onFollowTopic = { }, - onUnfollowTopic = { }, ) } } diff --git a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt index 79d8853e6..160bcfb3b 100644 --- a/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt +++ b/feature/topic/src/main/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModel.kt @@ -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) { viewModelScope.launch { userDataRepository.updateNewsResourceBookmark(newsResourceId, bookmarked)