From 9c22a7a4e72c0d1d896c9e52ed34ccf30111e8f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1rton=20Braun?= Date: Wed, 30 Nov 2022 13:29:04 +0100 Subject: [PATCH] Remove `Stream` suffixes Change-Id: I45decae965d7e35289d3fa31fc58b8c463fbead1 --- .../nowinandroid/MainActivityViewModel.kt | 2 +- .../core/data/repository/AuthorsRepository.kt | 4 +-- .../core/data/repository/NewsRepository.kt | 4 +-- .../OfflineFirstAuthorsRepository.kt | 8 ++--- .../repository/OfflineFirstNewsRepository.kt | 8 ++--- .../OfflineFirstTopicsRepository.kt | 4 +-- .../OfflineFirstUserDataRepository.kt | 4 +-- .../core/data/repository/TopicsRepository.kt | 2 +- .../data/repository/UserDataRepository.kt | 2 +- .../repository/fake/FakeAuthorsRepository.kt | 6 ++-- .../repository/fake/FakeNewsRepository.kt | 4 +-- .../repository/fake/FakeTopicsRepository.kt | 4 +-- .../repository/fake/FakeUserDataRepository.kt | 4 +-- .../OfflineFirstAuthorsRepositoryTest.kt | 10 +++--- .../OfflineFirstNewsRepositoryTest.kt | 26 +++++++------- .../OfflineFirstTopicsRepositoryTest.kt | 10 +++--- .../OfflineFirstUserDataRepositoryTest.kt | 36 +++++++++---------- .../core/data/testdoubles/TestAuthorDao.kt | 4 +-- .../data/testdoubles/TestNewsResourceDao.kt | 6 ++-- .../core/data/testdoubles/TestTopicDao.kt | 6 ++-- .../core/database/dao/NewsResourceDaoTest.kt | 10 +++--- .../core/database/dao/AuthorDao.kt | 4 +-- .../core/database/dao/NewsResourceDao.kt | 4 +-- .../core/database/dao/TopicDao.kt | 4 +-- .../datastore/NiaPreferencesDataSource.kt | 2 +- .../datastore/NiaPreferencesDataSourceTest.kt | 16 ++++----- ...eCase.kt => GetFollowableTopicsUseCase.kt} | 7 ++-- ....kt => GetSaveableNewsResourcesUseCase.kt} | 14 ++++---- ...t => GetSortedFollowableAuthorsUseCase.kt} | 6 ++-- ...t.kt => GetFollowableTopicsUseCaseTest.kt} | 4 +-- ...=> GetSaveableNewsResourcesUseCaseTest.kt} | 4 +-- ... GetSortedFollowableAuthorsUseCaseTest.kt} | 8 ++--- .../repository/TestAuthorsRepository.kt | 4 +-- .../testing/repository/TestNewsRepository.kt | 6 ++-- .../repository/TestTopicsRepository.kt | 2 +- .../repository/TestUserDataRepository.kt | 2 +- docs/ArchitectureLearningJourney.md | 8 ++--- .../feature/author/AuthorViewModel.kt | 22 ++++++------ .../feature/author/AuthorViewModelTest.kt | 8 ++--- .../feature/bookmarks/BookmarksViewModel.kt | 6 ++-- .../bookmarks/BookmarksViewModelTest.kt | 6 ++-- .../feature/foryou/ForYouViewModel.kt | 22 ++++++------ .../feature/foryou/ForYouViewModelTest.kt | 18 +++++----- .../feature/interests/InterestsViewModel.kt | 12 +++---- .../interests/InterestsViewModelTest.kt | 14 ++++---- .../feature/settings/SettingsViewModel.kt | 2 +- .../feature/topic/TopicViewModel.kt | 34 +++++++++--------- .../feature/topic/TopicViewModelTest.kt | 6 ++-- 48 files changed, 204 insertions(+), 205 deletions(-) rename core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/{GetFollowableTopicsStreamUseCase.kt => GetFollowableTopicsUseCase.kt} (91%) rename core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/{GetSaveableNewsResourcesStreamUseCase.kt => GetSaveableNewsResourcesUseCase.kt} (85%) rename core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/{GetSortedFollowableAuthorsStreamUseCase.kt => GetSortedFollowableAuthorsUseCase.kt} (91%) rename core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/{GetFollowableTopicsStreamUseCaseTest.kt => GetFollowableTopicsUseCaseTest.kt} (97%) rename core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/{GetSaveableNewsResourcesStreamUseCaseTest.kt => GetSaveableNewsResourcesUseCaseTest.kt} (98%) rename core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/{GetSortedFollowableAuthorsStreamUseCaseTest.kt => GetSortedFollowableAuthorsUseCaseTest.kt} (93%) diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/MainActivityViewModel.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/MainActivityViewModel.kt index 885fb6c3d..0a182cbd7 100644 --- a/app/src/main/java/com/google/samples/apps/nowinandroid/MainActivityViewModel.kt +++ b/app/src/main/java/com/google/samples/apps/nowinandroid/MainActivityViewModel.kt @@ -33,7 +33,7 @@ import kotlinx.coroutines.flow.stateIn class MainActivityViewModel @Inject constructor( userDataRepository: UserDataRepository ) : ViewModel() { - val uiState: StateFlow = userDataRepository.userDataStream.map { + val uiState: StateFlow = userDataRepository.userData.map { Success(it) }.stateIn( scope = viewModelScope, diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/AuthorsRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/AuthorsRepository.kt index 8a27d5704..e0f549a2f 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/AuthorsRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/AuthorsRepository.kt @@ -24,10 +24,10 @@ interface AuthorsRepository : Syncable { /** * Gets the available Authors as a stream */ - fun getAuthorsStream(): Flow> + fun getAuthors(): Flow> /** * Gets data for a specific author */ - fun getAuthorStream(id: String): Flow + fun getAuthor(id: String): Flow } diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/NewsRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/NewsRepository.kt index b8f2c47c8..ae1731eb2 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/NewsRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/NewsRepository.kt @@ -27,12 +27,12 @@ interface NewsRepository : Syncable { /** * Returns available news resources as a stream. */ - fun getNewsResourcesStream(): Flow> + fun getNewsResources(): Flow> /** * Returns available news resources as a stream filtered by authors or topics. */ - fun getNewsResourcesStream( + fun getNewsResources( filterAuthorIds: Set = emptySet(), filterTopicIds: Set = emptySet(), ): Flow> diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstAuthorsRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstAuthorsRepository.kt index 0773bdc59..7629a511b 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstAuthorsRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstAuthorsRepository.kt @@ -39,13 +39,13 @@ class OfflineFirstAuthorsRepository @Inject constructor( private val network: NiaNetworkDataSource, ) : AuthorsRepository { - override fun getAuthorStream(id: String): Flow = - authorDao.getAuthorEntityStream(id).map { + override fun getAuthor(id: String): Flow = + authorDao.getAuthorEntity(id).map { it.asExternalModel() } - override fun getAuthorsStream(): Flow> = - authorDao.getAuthorEntitiesStream() + override fun getAuthors(): Flow> = + authorDao.getAuthorEntities() .map { it.map(AuthorEntity::asExternalModel) } override suspend fun syncWith(synchronizer: Synchronizer): Boolean = diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstNewsRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstNewsRepository.kt index e3f05a455..aa3b3e227 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstNewsRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstNewsRepository.kt @@ -49,14 +49,14 @@ class OfflineFirstNewsRepository @Inject constructor( private val network: NiaNetworkDataSource, ) : NewsRepository { - override fun getNewsResourcesStream(): Flow> = - newsResourceDao.getNewsResourcesStream() + override fun getNewsResources(): Flow> = + newsResourceDao.getNewsResources() .map { it.map(PopulatedNewsResource::asExternalModel) } - override fun getNewsResourcesStream( + override fun getNewsResources( filterAuthorIds: Set, filterTopicIds: Set - ): Flow> = newsResourceDao.getNewsResourcesStream( + ): Flow> = newsResourceDao.getNewsResources( filterAuthorIds = filterAuthorIds, filterTopicIds = filterTopicIds ) diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstTopicsRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstTopicsRepository.kt index 04d800021..c3d2cb72e 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstTopicsRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstTopicsRepository.kt @@ -39,8 +39,8 @@ class OfflineFirstTopicsRepository @Inject constructor( private val network: NiaNetworkDataSource, ) : TopicsRepository { - override fun getTopicsStream(): Flow> = - topicDao.getTopicEntitiesStream() + override fun getTopics(): Flow> = + topicDao.getTopicEntities() .map { it.map(TopicEntity::asExternalModel) } override fun getTopic(id: String): Flow = diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstUserDataRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstUserDataRepository.kt index e95c13460..b0febef17 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstUserDataRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstUserDataRepository.kt @@ -27,8 +27,8 @@ class OfflineFirstUserDataRepository @Inject constructor( private val niaPreferencesDataSource: NiaPreferencesDataSource ) : UserDataRepository { - override val userDataStream: Flow = - niaPreferencesDataSource.userDataStream + override val userData: Flow = + niaPreferencesDataSource.userData override suspend fun setFollowedTopicIds(followedTopicIds: Set) = niaPreferencesDataSource.setFollowedTopicIds(followedTopicIds) diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/TopicsRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/TopicsRepository.kt index 2e48fb334..fcf875cdd 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/TopicsRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/TopicsRepository.kt @@ -24,7 +24,7 @@ interface TopicsRepository : Syncable { /** * Gets the available topics as a stream */ - fun getTopicsStream(): Flow> + fun getTopics(): Flow> /** * Gets data for a specific topic diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/UserDataRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/UserDataRepository.kt index 8cd22c18f..aec578c59 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/UserDataRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/UserDataRepository.kt @@ -26,7 +26,7 @@ interface UserDataRepository { /** * Stream of [UserData] */ - val userDataStream: Flow + val userData: Flow /** * Sets the user's currently followed topics diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeAuthorsRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeAuthorsRepository.kt index 056e1e861..7d1f6f904 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeAuthorsRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeAuthorsRepository.kt @@ -40,7 +40,7 @@ class FakeAuthorsRepository @Inject constructor( private val datasource: FakeNiaNetworkDataSource ) : AuthorsRepository { - override fun getAuthorsStream(): Flow> = flow { + override fun getAuthors(): Flow> = flow { emit( datasource.getAuthors().map { Author( @@ -55,8 +55,8 @@ class FakeAuthorsRepository @Inject constructor( ) }.flowOn(ioDispatcher) - override fun getAuthorStream(id: String): Flow { - return getAuthorsStream().map { it.first { author -> author.id == id } } + override fun getAuthor(id: String): Flow { + return getAuthors().map { it.first { author -> author.id == id } } } override suspend fun syncWith(synchronizer: Synchronizer) = true diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeNewsRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeNewsRepository.kt index d55db1709..2b156ce6e 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeNewsRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeNewsRepository.kt @@ -43,7 +43,7 @@ class FakeNewsRepository @Inject constructor( private val datasource: FakeNiaNetworkDataSource ) : NewsRepository { - override fun getNewsResourcesStream(): Flow> = + override fun getNewsResources(): Flow> = flow { emit( datasource.getNewsResources() @@ -52,7 +52,7 @@ class FakeNewsRepository @Inject constructor( ) }.flowOn(ioDispatcher) - override fun getNewsResourcesStream( + override fun getNewsResources( filterAuthorIds: Set, filterTopicIds: Set, ): Flow> = diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeTopicsRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeTopicsRepository.kt index ff4be8604..60d876b75 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeTopicsRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeTopicsRepository.kt @@ -40,7 +40,7 @@ class FakeTopicsRepository @Inject constructor( @Dispatcher(IO) private val ioDispatcher: CoroutineDispatcher, private val datasource: FakeNiaNetworkDataSource ) : TopicsRepository { - override fun getTopicsStream(): Flow> = flow { + override fun getTopics(): Flow> = flow { emit( datasource.getTopics().map { Topic( @@ -56,7 +56,7 @@ class FakeTopicsRepository @Inject constructor( }.flowOn(ioDispatcher) override fun getTopic(id: String): Flow { - return getTopicsStream().map { it.first { topic -> topic.id == id } } + return getTopics().map { it.first { topic -> topic.id == id } } } override suspend fun syncWith(synchronizer: Synchronizer) = true diff --git a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeUserDataRepository.kt b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeUserDataRepository.kt index 4752cd7a1..dc438e97d 100644 --- a/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeUserDataRepository.kt +++ b/core/data/src/main/java/com/google/samples/apps/nowinandroid/core/data/repository/fake/FakeUserDataRepository.kt @@ -35,8 +35,8 @@ class FakeUserDataRepository @Inject constructor( private val niaPreferencesDataSource: NiaPreferencesDataSource, ) : UserDataRepository { - override val userDataStream: Flow = - niaPreferencesDataSource.userDataStream + override val userData: Flow = + niaPreferencesDataSource.userData override suspend fun setFollowedTopicIds(followedTopicIds: Set) = niaPreferencesDataSource.setFollowedTopicIds(followedTopicIds) diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstAuthorsRepositoryTest.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstAuthorsRepositoryTest.kt index ea7e9c4ba..8c4327cc4 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstAuthorsRepositoryTest.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstAuthorsRepositoryTest.kt @@ -69,10 +69,10 @@ class OfflineFirstAuthorsRepositoryTest { fun offlineFirstAuthorsRepository_Authors_stream_is_backed_by_Authors_dao() = runTest { assertEquals( - authorDao.getAuthorEntitiesStream() + authorDao.getAuthorEntities() .first() .map(AuthorEntity::asExternalModel), - subject.getAuthorsStream() + subject.getAuthors() .first() ) } @@ -85,7 +85,7 @@ class OfflineFirstAuthorsRepositoryTest { val networkAuthors = network.getAuthors() .map(NetworkAuthor::asEntity) - val dbAuthors = authorDao.getAuthorEntitiesStream() + val dbAuthors = authorDao.getAuthorEntities() .first() assertEquals( @@ -122,7 +122,7 @@ class OfflineFirstAuthorsRepositoryTest { .map(NetworkAuthor::asEntity) .filter { it.id in changeListIds } - val db = authorDao.getAuthorEntitiesStream() + val db = authorDao.getAuthorEntities() .first() assertEquals( @@ -161,7 +161,7 @@ class OfflineFirstAuthorsRepositoryTest { subject.syncWith(synchronizer) - val dbAuthors = authorDao.getAuthorEntitiesStream() + val dbAuthors = authorDao.getAuthorEntities() .first() .map(AuthorEntity::asExternalModel) diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstNewsRepositoryTest.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstNewsRepositoryTest.kt index 78fcac0f2..c86120412 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstNewsRepositoryTest.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstNewsRepositoryTest.kt @@ -88,10 +88,10 @@ class OfflineFirstNewsRepositoryTest { fun offlineFirstNewsRepository_news_resources_stream_is_backed_by_news_resource_dao() = runTest { assertEquals( - newsResourceDao.getNewsResourcesStream() + newsResourceDao.getNewsResources() .first() .map(PopulatedNewsResource::asExternalModel), - subject.getNewsResourcesStream() + subject.getNewsResources() .first() ) } @@ -100,12 +100,12 @@ class OfflineFirstNewsRepositoryTest { fun offlineFirstNewsRepository_news_resources_for_topic_is_backed_by_news_resource_dao() = runTest { assertEquals( - newsResourceDao.getNewsResourcesStream( + newsResourceDao.getNewsResources( filterTopicIds = filteredInterestsIds, ) .first() .map(PopulatedNewsResource::asExternalModel), - subject.getNewsResourcesStream( + subject.getNewsResources( filterTopicIds = filteredInterestsIds, ) .first() @@ -113,7 +113,7 @@ class OfflineFirstNewsRepositoryTest { assertEquals( emptyList(), - subject.getNewsResourcesStream( + subject.getNewsResources( filterTopicIds = nonPresentInterestsIds, ) .first() @@ -124,12 +124,12 @@ class OfflineFirstNewsRepositoryTest { fun offlineFirstNewsRepository_news_resources_for_author_is_backed_by_news_resource_dao() = runTest { assertEquals( - newsResourceDao.getNewsResourcesStream( + newsResourceDao.getNewsResources( filterAuthorIds = filteredInterestsIds ) .first() .map(PopulatedNewsResource::asExternalModel), - subject.getNewsResourcesStream( + subject.getNewsResources( filterAuthorIds = filteredInterestsIds ) .first() @@ -137,7 +137,7 @@ class OfflineFirstNewsRepositoryTest { assertEquals( emptyList(), - subject.getNewsResourcesStream( + subject.getNewsResources( filterAuthorIds = nonPresentInterestsIds ) .first() @@ -153,7 +153,7 @@ class OfflineFirstNewsRepositoryTest { .map(NetworkNewsResource::asEntity) .map(NewsResourceEntity::asExternalModel) - val newsResourcesFromDb = newsResourceDao.getNewsResourcesStream() + val newsResourcesFromDb = newsResourceDao.getNewsResources() .first() .map(PopulatedNewsResource::asExternalModel) @@ -193,7 +193,7 @@ class OfflineFirstNewsRepositoryTest { subject.syncWith(synchronizer) - val newsResourcesFromDb = newsResourceDao.getNewsResourcesStream() + val newsResourcesFromDb = newsResourceDao.getNewsResources() .first() .map(PopulatedNewsResource::asExternalModel) @@ -233,7 +233,7 @@ class OfflineFirstNewsRepositoryTest { .map(NewsResourceEntity::asExternalModel) .filter { it.id in changeListIds } - val newsResourcesFromDb = newsResourceDao.getNewsResourcesStream() + val newsResourcesFromDb = newsResourceDao.getNewsResources() .first() .map(PopulatedNewsResource::asExternalModel) @@ -259,7 +259,7 @@ class OfflineFirstNewsRepositoryTest { .map(NetworkNewsResource::topicEntityShells) .flatten() .distinctBy(TopicEntity::id), - topicDao.getTopicEntitiesStream() + topicDao.getTopicEntities() .first() ) } @@ -274,7 +274,7 @@ class OfflineFirstNewsRepositoryTest { .map(NetworkNewsResource::authorEntityShells) .flatten() .distinctBy(AuthorEntity::id), - authorDao.getAuthorEntitiesStream() + authorDao.getAuthorEntities() .first() ) } diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstTopicsRepositoryTest.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstTopicsRepositoryTest.kt index 2514b07cb..5c3f8dfc0 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstTopicsRepositoryTest.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstTopicsRepositoryTest.kt @@ -70,10 +70,10 @@ class OfflineFirstTopicsRepositoryTest { fun offlineFirstTopicsRepository_topics_stream_is_backed_by_topics_dao() = runTest { assertEquals( - topicDao.getTopicEntitiesStream() + topicDao.getTopicEntities() .first() .map(TopicEntity::asExternalModel), - subject.getTopicsStream() + subject.getTopics() .first() ) } @@ -86,7 +86,7 @@ class OfflineFirstTopicsRepositoryTest { val networkTopics = network.getTopics() .map(NetworkTopic::asEntity) - val dbTopics = topicDao.getTopicEntitiesStream() + val dbTopics = topicDao.getTopicEntities() .first() assertEquals( @@ -116,7 +116,7 @@ class OfflineFirstTopicsRepositoryTest { // Drop 10 to simulate the first 10 items being unchanged .drop(10) - val dbTopics = topicDao.getTopicEntitiesStream() + val dbTopics = topicDao.getTopicEntities() .first() assertEquals( @@ -155,7 +155,7 @@ class OfflineFirstTopicsRepositoryTest { subject.syncWith(synchronizer) - val dbTopics = topicDao.getTopicEntitiesStream() + val dbTopics = topicDao.getTopicEntities() .first() .map(TopicEntity::asExternalModel) diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstUserDataRepositoryTest.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstUserDataRepositoryTest.kt index 63aadc7bf..1da7bc6da 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstUserDataRepositoryTest.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/repository/OfflineFirstUserDataRepositoryTest.kt @@ -63,7 +63,7 @@ class OfflineFirstUserDataRepositoryTest { darkThemeConfig = DarkThemeConfig.FOLLOW_SYSTEM, shouldHideOnboarding = false ), - subject.userDataStream.first() + subject.userData.first() ) } @@ -74,7 +74,7 @@ class OfflineFirstUserDataRepositoryTest { assertEquals( setOf("0"), - subject.userDataStream + subject.userData .map { it.followedTopics } .first() ) @@ -83,16 +83,16 @@ class OfflineFirstUserDataRepositoryTest { assertEquals( setOf("0", "1"), - subject.userDataStream + subject.userData .map { it.followedTopics } .first() ) assertEquals( - niaPreferencesDataSource.userDataStream + niaPreferencesDataSource.userData .map { it.followedTopics } .first(), - subject.userDataStream + subject.userData .map { it.followedTopics } .first() ) @@ -105,16 +105,16 @@ class OfflineFirstUserDataRepositoryTest { assertEquals( setOf("1", "2"), - subject.userDataStream + subject.userData .map { it.followedTopics } .first() ) assertEquals( - niaPreferencesDataSource.userDataStream + niaPreferencesDataSource.userData .map { it.followedTopics } .first(), - subject.userDataStream + subject.userData .map { it.followedTopics } .first() ) @@ -127,7 +127,7 @@ class OfflineFirstUserDataRepositoryTest { assertEquals( setOf("0"), - subject.userDataStream + subject.userData .map { it.bookmarkedNewsResources } .first() ) @@ -136,16 +136,16 @@ class OfflineFirstUserDataRepositoryTest { assertEquals( setOf("0", "1"), - subject.userDataStream + subject.userData .map { it.bookmarkedNewsResources } .first() ) assertEquals( - niaPreferencesDataSource.userDataStream + niaPreferencesDataSource.userData .map { it.bookmarkedNewsResources } .first(), - subject.userDataStream + subject.userData .map { it.bookmarkedNewsResources } .first() ) @@ -158,14 +158,14 @@ class OfflineFirstUserDataRepositoryTest { assertEquals( ThemeBrand.ANDROID, - subject.userDataStream + subject.userData .map { it.themeBrand } .first() ) assertEquals( ThemeBrand.ANDROID, niaPreferencesDataSource - .userDataStream + .userData .map { it.themeBrand } .first() ) @@ -178,14 +178,14 @@ class OfflineFirstUserDataRepositoryTest { assertEquals( DarkThemeConfig.DARK, - subject.userDataStream + subject.userData .map { it.darkThemeConfig } .first() ) assertEquals( DarkThemeConfig.DARK, niaPreferencesDataSource - .userDataStream + .userData .map { it.darkThemeConfig } .first() ) @@ -196,9 +196,9 @@ class OfflineFirstUserDataRepositoryTest { runTest { subject.setFollowedTopicIds(setOf("1")) subject.setShouldHideOnboarding(true) - assertTrue(subject.userDataStream.first().shouldHideOnboarding) + assertTrue(subject.userData.first().shouldHideOnboarding) subject.setFollowedTopicIds(emptySet()) - assertFalse(subject.userDataStream.first().shouldHideOnboarding) + assertFalse(subject.userData.first().shouldHideOnboarding) } } diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestAuthorDao.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestAuthorDao.kt index a740f4a4e..f6d1a011b 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestAuthorDao.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestAuthorDao.kt @@ -40,10 +40,10 @@ class TestAuthorDao : AuthorDao { ) ) - override fun getAuthorEntitiesStream(): Flow> = + override fun getAuthorEntities(): Flow> = entitiesStateFlow - override fun getAuthorEntityStream(authorId: String): Flow { + override fun getAuthorEntity(authorId: String): Flow { throw NotImplementedError("Unused in tests") } diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestNewsResourceDao.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestNewsResourceDao.kt index a91c0fc87..8289df5df 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestNewsResourceDao.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestNewsResourceDao.kt @@ -56,16 +56,16 @@ class TestNewsResourceDao : NewsResourceDao { internal var authorCrossReferences: List = listOf() - override fun getNewsResourcesStream(): Flow> = + override fun getNewsResources(): Flow> = entitiesStateFlow.map { it.map(NewsResourceEntity::asPopulatedNewsResource) } - override fun getNewsResourcesStream( + override fun getNewsResources( filterAuthorIds: Set, filterTopicIds: Set ): Flow> = - getNewsResourcesStream() + getNewsResources() .map { resources -> resources.filter { resource -> resource.topics.any { it.id in filterTopicIds } || diff --git a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestTopicDao.kt b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestTopicDao.kt index 50910ddd2..d842f1501 100644 --- a/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestTopicDao.kt +++ b/core/data/src/test/java/com/google/samples/apps/nowinandroid/core/data/testdoubles/TestTopicDao.kt @@ -45,11 +45,11 @@ class TestTopicDao : TopicDao { throw NotImplementedError("Unused in tests") } - override fun getTopicEntitiesStream(): Flow> = + override fun getTopicEntities(): Flow> = entitiesStateFlow - override fun getTopicEntitiesStream(ids: Set): Flow> = - getTopicEntitiesStream() + override fun getTopicEntities(ids: Set): Flow> = + getTopicEntities() .map { topics -> topics.filter { it.id in ids } } override suspend fun insertOrIgnoreTopics(topicEntities: List): List { diff --git a/core/database/src/androidTest/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt b/core/database/src/androidTest/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt index 017704381..68d07b990 100644 --- a/core/database/src/androidTest/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt +++ b/core/database/src/androidTest/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDaoTest.kt @@ -77,7 +77,7 @@ class NewsResourceDaoTest { newsResourceEntities ) - val savedNewsResourceEntities = newsResourceDao.getNewsResourcesStream() + val savedNewsResourceEntities = newsResourceDao.getNewsResources() .first() assertEquals( @@ -135,7 +135,7 @@ class NewsResourceDaoTest { newsResourceTopicCrossRefEntities ) - val filteredNewsResources = newsResourceDao.getNewsResourcesStream( + val filteredNewsResources = newsResourceDao.getNewsResources( filterTopicIds = topicEntities .map(TopicEntity::id) .toSet(), @@ -188,7 +188,7 @@ class NewsResourceDaoTest { newsResourceDao.upsertNewsResources(newsResourceEntities) newsResourceDao.insertOrIgnoreAuthorCrossRefEntities(newsResourceAuthorCrossRefEntities) - val filteredNewsResources = newsResourceDao.getNewsResourcesStream( + val filteredNewsResources = newsResourceDao.getNewsResources( filterAuthorIds = authorEntities .map(AuthorEntity::id) .toSet() @@ -268,7 +268,7 @@ class NewsResourceDaoTest { newsResourceDao.insertOrIgnoreTopicCrossRefEntities(newsResourceTopicCrossRefEntities) newsResourceDao.insertOrIgnoreAuthorCrossRefEntities(newsResourceAuthorCrossRefEntities) - val filteredNewsResources = newsResourceDao.getNewsResourcesStream( + val filteredNewsResources = newsResourceDao.getNewsResources( filterTopicIds = topicEntities .map(TopicEntity::id) .toSet(), @@ -315,7 +315,7 @@ class NewsResourceDaoTest { assertEquals( toKeep.map(NewsResourceEntity::id) .toSet(), - newsResourceDao.getNewsResourcesStream().first() + newsResourceDao.getNewsResources().first() .map { it.entity.id } .toSet() ) diff --git a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/AuthorDao.kt b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/AuthorDao.kt index 9790040f7..0861c5f98 100644 --- a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/AuthorDao.kt +++ b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/AuthorDao.kt @@ -36,10 +36,10 @@ interface AuthorDao { WHERE id = :authorId """ ) - fun getAuthorEntityStream(authorId: String): Flow + fun getAuthorEntity(authorId: String): Flow @Query(value = "SELECT * FROM authors") - fun getAuthorEntitiesStream(): Flow> + fun getAuthorEntities(): Flow> /** * Inserts [authorEntities] into the db if they don't exist, and ignores those that do diff --git a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDao.kt b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDao.kt index 46f6b62f9..2d6bcb9ef 100644 --- a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDao.kt +++ b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/NewsResourceDao.kt @@ -42,7 +42,7 @@ interface NewsResourceDao { ORDER BY publish_date DESC """ ) - fun getNewsResourcesStream(): Flow> + fun getNewsResources(): Flow> @Transaction @Query( @@ -61,7 +61,7 @@ interface NewsResourceDao { ORDER BY publish_date DESC """ ) - fun getNewsResourcesStream( + fun getNewsResources( filterAuthorIds: Set = emptySet(), filterTopicIds: Set = emptySet(), ): Flow> diff --git a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/TopicDao.kt b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/TopicDao.kt index 2728d5591..9d9cde602 100644 --- a/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/TopicDao.kt +++ b/core/database/src/main/java/com/google/samples/apps/nowinandroid/core/database/dao/TopicDao.kt @@ -39,7 +39,7 @@ interface TopicDao { fun getTopicEntity(topicId: String): Flow @Query(value = "SELECT * FROM topics") - fun getTopicEntitiesStream(): Flow> + fun getTopicEntities(): Flow> @Query( value = """ @@ -47,7 +47,7 @@ interface TopicDao { WHERE id IN (:ids) """ ) - fun getTopicEntitiesStream(ids: Set): Flow> + fun getTopicEntities(ids: Set): Flow> /** * Inserts [topicEntities] into the db if they don't exist, and ignores those that do diff --git a/core/datastore/src/main/java/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSource.kt b/core/datastore/src/main/java/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSource.kt index 0f0931e6b..ac372b83a 100644 --- a/core/datastore/src/main/java/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSource.kt +++ b/core/datastore/src/main/java/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSource.kt @@ -30,7 +30,7 @@ class NiaPreferencesDataSource @Inject constructor( private val userPreferences: DataStore ) { - val userDataStream = userPreferences.data + val userData = userPreferences.data .map { UserData( bookmarkedNewsResources = it.bookmarkedNewsResourceIdsMap.keys, diff --git a/core/datastore/src/test/java/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSourceTest.kt b/core/datastore/src/test/java/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSourceTest.kt index 78759d0ce..f3e97a4b3 100644 --- a/core/datastore/src/test/java/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSourceTest.kt +++ b/core/datastore/src/test/java/com/google/samples/apps/nowinandroid/core/datastore/NiaPreferencesDataSourceTest.kt @@ -41,13 +41,13 @@ class NiaPreferencesDataSourceTest { @Test fun shouldHideOnboardingIsFalseByDefault() = runTest { - assertFalse(subject.userDataStream.first().shouldHideOnboarding) + assertFalse(subject.userData.first().shouldHideOnboarding) } @Test fun userShouldHideOnboardingIsTrueWhenSet() = runTest { subject.setShouldHideOnboarding(true) - assertTrue(subject.userDataStream.first().shouldHideOnboarding) + assertTrue(subject.userData.first().shouldHideOnboarding) } @Test @@ -61,7 +61,7 @@ class NiaPreferencesDataSourceTest { subject.toggleFollowedAuthorId("1", false) // Then: onboarding should be shown again - assertFalse(subject.userDataStream.first().shouldHideOnboarding) + assertFalse(subject.userData.first().shouldHideOnboarding) } @Test @@ -75,7 +75,7 @@ class NiaPreferencesDataSourceTest { subject.toggleFollowedTopicId("1", false) // Then: onboarding should be shown again - assertFalse(subject.userDataStream.first().shouldHideOnboarding) + assertFalse(subject.userData.first().shouldHideOnboarding) } @Test @@ -89,7 +89,7 @@ class NiaPreferencesDataSourceTest { subject.setFollowedAuthorIds(emptySet()) // Then: onboarding should be shown again - assertFalse(subject.userDataStream.first().shouldHideOnboarding) + assertFalse(subject.userData.first().shouldHideOnboarding) } @Test @@ -103,7 +103,7 @@ class NiaPreferencesDataSourceTest { subject.setFollowedTopicIds(emptySet()) // Then: onboarding should be shown again - assertFalse(subject.userDataStream.first().shouldHideOnboarding) + assertFalse(subject.userData.first().shouldHideOnboarding) } @Test @@ -118,7 +118,7 @@ class NiaPreferencesDataSourceTest { subject.setFollowedTopicIds(emptySet()) // Then: onboarding should still be dismissed - assertTrue(subject.userDataStream.first().shouldHideOnboarding) + assertTrue(subject.userData.first().shouldHideOnboarding) } @Test @@ -133,6 +133,6 @@ class NiaPreferencesDataSourceTest { subject.setFollowedAuthorIds(emptySet()) // Then: onboarding should still be dismissed - assertTrue(subject.userDataStream.first().shouldHideOnboarding) + assertTrue(subject.userData.first().shouldHideOnboarding) } } diff --git a/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsStreamUseCase.kt b/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCase.kt similarity index 91% rename from core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsStreamUseCase.kt rename to core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCase.kt index 2f1fada9d..2fab78d6c 100644 --- a/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsStreamUseCase.kt +++ b/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCase.kt @@ -24,12 +24,11 @@ import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import javax.inject.Inject import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.flow.map /** * A use case which obtains a list of topics with their followed state. */ -class GetFollowableTopicsStreamUseCase @Inject constructor( +class GetFollowableTopicsUseCase @Inject constructor( private val topicsRepository: TopicsRepository, private val userDataRepository: UserDataRepository ) { @@ -40,8 +39,8 @@ class GetFollowableTopicsStreamUseCase @Inject constructor( */ operator fun invoke(sortBy: TopicSortField = NONE): Flow> { return combine( - userDataRepository.userDataStream, - topicsRepository.getTopicsStream() + userDataRepository.userData, + topicsRepository.getTopics() ) { userData, topics -> val followedTopics = topics .map { topic -> diff --git a/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesStreamUseCase.kt b/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesUseCase.kt similarity index 85% rename from core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesStreamUseCase.kt rename to core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesUseCase.kt index a5cce3a65..0d066e593 100644 --- a/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesStreamUseCase.kt +++ b/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesUseCase.kt @@ -30,12 +30,12 @@ import kotlinx.coroutines.flow.map * A use case responsible for obtaining news resources with their associated bookmarked (also known * as "saved") state. */ -class GetSaveableNewsResourcesStreamUseCase @Inject constructor( +class GetSaveableNewsResourcesUseCase @Inject constructor( private val newsRepository: NewsRepository, userDataRepository: UserDataRepository ) { - private val bookmarkedNewsResourcesStream = userDataRepository.userDataStream.map { + private val bookmarkedNewsResources = userDataRepository.userData.map { it.bookmarkedNewsResources } @@ -54,20 +54,20 @@ class GetSaveableNewsResourcesStreamUseCase @Inject constructor( filterAuthorIds: Set = emptySet() ): Flow> = if (filterTopicIds.isEmpty() && filterAuthorIds.isEmpty()) { - newsRepository.getNewsResourcesStream() + newsRepository.getNewsResources() } else { - newsRepository.getNewsResourcesStream( + newsRepository.getNewsResources( filterTopicIds = filterTopicIds, filterAuthorIds = filterAuthorIds ) - }.mapToSaveableNewsResources(bookmarkedNewsResourcesStream) + }.mapToSaveableNewsResources(bookmarkedNewsResources) } private fun Flow>.mapToSaveableNewsResources( - savedNewsResourceIdsStream: Flow> + savedNewsResourceIds: Flow> ): Flow> = filterNot { it.isEmpty() } - .combine(savedNewsResourceIdsStream) { newsResources, savedNewsResourceIds -> + .combine(savedNewsResourceIds) { newsResources, savedNewsResourceIds -> newsResources.map { newsResource -> SaveableNewsResource( newsResource = newsResource, diff --git a/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsStreamUseCase.kt b/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsUseCase.kt similarity index 91% rename from core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsStreamUseCase.kt rename to core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsUseCase.kt index 498558c2f..de12d3940 100644 --- a/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsStreamUseCase.kt +++ b/core/domain/src/main/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsUseCase.kt @@ -27,7 +27,7 @@ import kotlinx.coroutines.flow.combine * A use case which obtains a list of authors sorted alphabetically by name with their followed * state. */ -class GetSortedFollowableAuthorsStreamUseCase @Inject constructor( +class GetSortedFollowableAuthorsUseCase @Inject constructor( private val authorsRepository: AuthorsRepository, private val userDataRepository: UserDataRepository ) { @@ -36,8 +36,8 @@ class GetSortedFollowableAuthorsStreamUseCase @Inject constructor( */ operator fun invoke(): Flow> = combine( - authorsRepository.getAuthorsStream(), - userDataRepository.userDataStream + authorsRepository.getAuthors(), + userDataRepository.userData ) { authors, userData -> authors.map { author -> FollowableAuthor( diff --git a/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsStreamUseCaseTest.kt b/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCaseTest.kt similarity index 97% rename from core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsStreamUseCaseTest.kt rename to core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCaseTest.kt index a3fff0d20..95ab22b63 100644 --- a/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsStreamUseCaseTest.kt +++ b/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetFollowableTopicsUseCaseTest.kt @@ -28,7 +28,7 @@ import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test -class GetFollowableTopicsStreamUseCaseTest { +class GetFollowableTopicsUseCaseTest { @get:Rule val mainDispatcherRule = MainDispatcherRule() @@ -36,7 +36,7 @@ class GetFollowableTopicsStreamUseCaseTest { private val topicsRepository = TestTopicsRepository() private val userDataRepository = TestUserDataRepository() - val useCase = GetFollowableTopicsStreamUseCase( + val useCase = GetFollowableTopicsUseCase( topicsRepository, userDataRepository ) diff --git a/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesStreamUseCaseTest.kt b/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesUseCaseTest.kt similarity index 98% rename from core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesStreamUseCaseTest.kt rename to core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesUseCaseTest.kt index 062fb4dc2..862a8d5ce 100644 --- a/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesStreamUseCaseTest.kt +++ b/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSaveableNewsResourcesUseCaseTest.kt @@ -31,7 +31,7 @@ import kotlinx.datetime.Instant import org.junit.Rule import org.junit.Test -class GetSaveableNewsResourcesStreamUseCaseTest { +class GetSaveableNewsResourcesUseCaseTest { @get:Rule val mainDispatcherRule = MainDispatcherRule() @@ -39,7 +39,7 @@ class GetSaveableNewsResourcesStreamUseCaseTest { private val newsRepository = TestNewsRepository() private val userDataRepository = TestUserDataRepository() - val useCase = GetSaveableNewsResourcesStreamUseCase(newsRepository, userDataRepository) + val useCase = GetSaveableNewsResourcesUseCase(newsRepository, userDataRepository) @Test fun whenNoFilters_allNewsResourcesAreReturned() = runTest { diff --git a/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsStreamUseCaseTest.kt b/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsUseCaseTest.kt similarity index 93% rename from core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsStreamUseCaseTest.kt rename to core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsUseCaseTest.kt index 24b88a88b..b78981808 100644 --- a/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsStreamUseCaseTest.kt +++ b/core/domain/src/test/java/com/google/samples/apps/nowinandroid/core/domain/GetSortedFollowableAuthorsUseCaseTest.kt @@ -27,7 +27,7 @@ import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test -class GetSortedFollowableAuthorsStreamUseCaseTest { +class GetSortedFollowableAuthorsUseCaseTest { @get:Rule val mainDispatcherRule = MainDispatcherRule() @@ -35,7 +35,7 @@ class GetSortedFollowableAuthorsStreamUseCaseTest { private val authorsRepository = TestAuthorsRepository() private val userDataRepository = TestUserDataRepository() - val useCase = GetSortedFollowableAuthorsStreamUseCase( + val useCase = GetSortedFollowableAuthorsUseCase( authorsRepository = authorsRepository, userDataRepository = userDataRepository ) @@ -47,14 +47,14 @@ class GetSortedFollowableAuthorsStreamUseCaseTest { userDataRepository.setFollowedAuthorIds(setOf(sampleAuthor1.id)) // Obtain the stream of authors, specifying their followed state. - val followableAuthorsStream = useCase() + val followableAuthors = useCase() // Supply some authors. authorsRepository.sendAuthors(sampleAuthors) // Check that the authors have been sorted, and that the followed state is correct. assertEquals( - followableAuthorsStream.first(), + followableAuthors.first(), listOf( FollowableAuthor(sampleAuthor2, false), FollowableAuthor(sampleAuthor1, true), diff --git a/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestAuthorsRepository.kt b/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestAuthorsRepository.kt index 13d01e480..220bece37 100644 --- a/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestAuthorsRepository.kt +++ b/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestAuthorsRepository.kt @@ -31,9 +31,9 @@ class TestAuthorsRepository : AuthorsRepository { private val authorsFlow: MutableSharedFlow> = MutableSharedFlow(replay = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST) - override fun getAuthorsStream(): Flow> = authorsFlow + override fun getAuthors(): Flow> = authorsFlow - override fun getAuthorStream(id: String): Flow { + override fun getAuthor(id: String): Flow { return authorsFlow.map { authors -> authors.find { it.id == id }!! } } diff --git a/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestNewsRepository.kt b/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestNewsRepository.kt index 86109f561..f57a98268 100644 --- a/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestNewsRepository.kt +++ b/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestNewsRepository.kt @@ -34,13 +34,13 @@ class TestNewsRepository : NewsRepository { private val newsResourcesFlow: MutableSharedFlow> = MutableSharedFlow(replay = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST) - override fun getNewsResourcesStream(): Flow> = newsResourcesFlow + override fun getNewsResources(): Flow> = newsResourcesFlow - override fun getNewsResourcesStream( + override fun getNewsResources( filterAuthorIds: Set, filterTopicIds: Set ): Flow> = - getNewsResourcesStream().map { newsResources -> + getNewsResources().map { newsResources -> newsResources .filter { it.authors.map(Author::id).intersect(filterAuthorIds).isNotEmpty() || diff --git a/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestTopicsRepository.kt b/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestTopicsRepository.kt index 3aa064a2d..a95469d83 100644 --- a/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestTopicsRepository.kt +++ b/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestTopicsRepository.kt @@ -31,7 +31,7 @@ class TestTopicsRepository : TopicsRepository { private val topicsFlow: MutableSharedFlow> = MutableSharedFlow(replay = 1, onBufferOverflow = BufferOverflow.DROP_OLDEST) - override fun getTopicsStream(): Flow> = topicsFlow + override fun getTopics(): Flow> = topicsFlow override fun getTopic(id: String): Flow { return topicsFlow.map { topics -> topics.find { it.id == id }!! } diff --git a/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestUserDataRepository.kt b/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestUserDataRepository.kt index 507fa1f7b..f3f12958b 100644 --- a/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestUserDataRepository.kt +++ b/core/testing/src/main/java/com/google/samples/apps/nowinandroid/core/testing/repository/TestUserDataRepository.kt @@ -42,7 +42,7 @@ class TestUserDataRepository : UserDataRepository { private val currentUserData get() = _userData.replayCache.firstOrNull() ?: emptyUserData - override val userDataStream: Flow = _userData.filterNotNull() + override val userData: Flow = _userData.filterNotNull() override suspend fun setFollowedTopicIds(followedTopicIds: Set) { _userData.tryEmit(currentUserData.copy(followedTopics = followedTopicIds)) diff --git a/docs/ArchitectureLearningJourney.md b/docs/ArchitectureLearningJourney.md index b28c864dd..a707e6db8 100644 --- a/docs/ArchitectureLearningJourney.md +++ b/docs/ArchitectureLearningJourney.md @@ -120,7 +120,7 @@ Here's what's happening in each step. The easiest way to find the associated cod When data changes in NewsResourceDao it is emitted into the news resources data stream (which is a Flow). - NewsResourceDao.getNewsResourcesStream + NewsResourceDao.getNewsResources @@ -128,7 +128,7 @@ Here's what's happening in each step. The easiest way to find the associated cod OfflineFirstNewsRepository acts as an intermediate operator on this stream, transforming the incoming PopulatedNewsResource (a database model, internal to the data layer) to the public NewsResource model which is consumed by other layers. - OfflineFirstNewsRepository.getNewsResourcesStream + OfflineFirstNewsRepository.getNewsResources @@ -167,7 +167,7 @@ Reads are performed from local storage as the source of truth, therefore errors _Example: Read a list of authors_ -A list of Authors can be obtained by subscribing to `AuthorsRepository::getAuthorsStream` flow which emits `List`. +A list of Authors can be obtained by subscribing to `AuthorsRepository::getAuthors` flow which emits `List`. Whenever the list of authors changes (for example, when a new author is added), the updated `List` is emitted into the stream. @@ -280,7 +280,7 @@ The `InterestsViewModel` exposes `uiState` as a `StateFlow`. T -* List of authors (`getAuthorsStream`) +* List of authors (`getAuthors`) * List of author IDs which the current user is following * List of topics * List of topic IDs which the current user is following 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..72b876a02 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 @@ -22,7 +22,7 @@ import androidx.lifecycle.viewModelScope import com.google.samples.apps.nowinandroid.core.data.repository.AuthorsRepository import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository import com.google.samples.apps.nowinandroid.core.decoder.StringDecoder -import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesUseCase import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.model.data.Author @@ -45,12 +45,12 @@ class AuthorViewModel @Inject constructor( stringDecoder: StringDecoder, private val userDataRepository: UserDataRepository, authorsRepository: AuthorsRepository, - getSaveableNewsResourcesStream: GetSaveableNewsResourcesStreamUseCase + getSaveableNewsResources: GetSaveableNewsResourcesUseCase ) : ViewModel() { private val authorArgs: AuthorArgs = AuthorArgs(savedStateHandle, stringDecoder) - val authorUiState: StateFlow = authorUiStateStream( + val authorUiState: StateFlow = authorUiState( authorId = authorArgs.authorId, userDataRepository = userDataRepository, authorsRepository = authorsRepository @@ -62,7 +62,7 @@ class AuthorViewModel @Inject constructor( ) val newsUiState: StateFlow = - getSaveableNewsResourcesStream.newsUiStateStream(authorId = authorArgs.authorId) + getSaveableNewsResources.newsUiState(authorId = authorArgs.authorId) .stateIn( scope = viewModelScope, started = SharingStarted.WhileSubscribed(5_000), @@ -82,24 +82,24 @@ class AuthorViewModel @Inject constructor( } } -private fun authorUiStateStream( +private fun authorUiState( authorId: String, userDataRepository: UserDataRepository, authorsRepository: AuthorsRepository, ): Flow { // Observe the followed authors, as they could change over time. - val followedAuthorIdsStream: Flow> = - userDataRepository.userDataStream + val followedAuthorIds: Flow> = + userDataRepository.userData .map { it.followedAuthors } // Observe author information - val authorStream: Flow = authorsRepository.getAuthorStream( + val author: Flow = authorsRepository.getAuthor( id = authorId ) return combine( - followedAuthorIdsStream, - authorStream, + followedAuthorIds, + author, ::Pair ) .asResult() @@ -125,7 +125,7 @@ private fun authorUiStateStream( } } -private fun GetSaveableNewsResourcesStreamUseCase.newsUiStateStream( +private fun GetSaveableNewsResourcesUseCase.newsUiState( authorId: String ): Flow { // Observe news diff --git a/feature/author/src/test/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModelTest.kt b/feature/author/src/test/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModelTest.kt index 92164ae54..498d9163b 100644 --- a/feature/author/src/test/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModelTest.kt +++ b/feature/author/src/test/java/com/google/samples/apps/nowinandroid/feature/author/AuthorViewModelTest.kt @@ -17,7 +17,7 @@ package com.google.samples.apps.nowinandroid.feature.author import androidx.lifecycle.SavedStateHandle -import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesUseCase import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.model.data.Author import com.google.samples.apps.nowinandroid.core.model.data.NewsResource @@ -54,7 +54,7 @@ class AuthorViewModelTest { private val userDataRepository = TestUserDataRepository() private val authorsRepository = TestAuthorsRepository() private val newsRepository = TestNewsRepository() - private val getSaveableNewsResourcesStreamUseCase = GetSaveableNewsResourcesStreamUseCase( + private val getSaveableNewsResourcesUseCase = GetSaveableNewsResourcesUseCase( newsRepository = newsRepository, userDataRepository = userDataRepository ) @@ -71,7 +71,7 @@ class AuthorViewModelTest { stringDecoder = FakeStringDecoder(), userDataRepository = userDataRepository, authorsRepository = authorsRepository, - getSaveableNewsResourcesStream = getSaveableNewsResourcesStreamUseCase + getSaveableNewsResources = getSaveableNewsResourcesUseCase ) } @@ -86,7 +86,7 @@ class AuthorViewModelTest { val item = viewModel.authorUiState.value assertIs(item) - val authorFromRepository = authorsRepository.getAuthorStream( + val authorFromRepository = authorsRepository.getAuthor( id = testInputAuthors[0].author.id ).first() 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..8223ecd1b 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 @@ -19,7 +19,7 @@ package com.google.samples.apps.nowinandroid.feature.bookmarks import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository -import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesUseCase import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState.Loading @@ -36,10 +36,10 @@ import kotlinx.coroutines.launch @HiltViewModel class BookmarksViewModel @Inject constructor( private val userDataRepository: UserDataRepository, - getSaveableNewsResourcesStream: GetSaveableNewsResourcesStreamUseCase + getSaveableNewsResources: GetSaveableNewsResourcesUseCase ) : ViewModel() { - val feedUiState: StateFlow = getSaveableNewsResourcesStream() + val feedUiState: StateFlow = getSaveableNewsResources() .filterNot { it.isEmpty() } .map { newsResources -> newsResources.filter(SaveableNewsResource::isSaved) } // Only show bookmarked news resources. .map, NewsFeedUiState>(NewsFeedUiState::Success) diff --git a/feature/bookmarks/src/test/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt b/feature/bookmarks/src/test/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt index 03d04af75..56f30eff5 100644 --- a/feature/bookmarks/src/test/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt +++ b/feature/bookmarks/src/test/java/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt @@ -16,7 +16,7 @@ package com.google.samples.apps.nowinandroid.feature.bookmarks -import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesUseCase import com.google.samples.apps.nowinandroid.core.model.data.previewNewsResources import com.google.samples.apps.nowinandroid.core.testing.repository.TestNewsRepository import com.google.samples.apps.nowinandroid.core.testing.repository.TestUserDataRepository @@ -43,7 +43,7 @@ class BookmarksViewModelTest { private val userDataRepository = TestUserDataRepository() private val newsRepository = TestNewsRepository() - private val getSaveableNewsResourcesStreamUseCase = GetSaveableNewsResourcesStreamUseCase( + private val getSaveableNewsResourcesUseCase = GetSaveableNewsResourcesUseCase( newsRepository = newsRepository, userDataRepository = userDataRepository ) @@ -53,7 +53,7 @@ class BookmarksViewModelTest { fun setup() { viewModel = BookmarksViewModel( userDataRepository = userDataRepository, - getSaveableNewsResourcesStream = getSaveableNewsResourcesStreamUseCase + getSaveableNewsResources = getSaveableNewsResourcesUseCase ) } 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 599bfd868..928c62cfd 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 @@ -20,9 +20,9 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository import com.google.samples.apps.nowinandroid.core.data.util.SyncStatusMonitor -import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsStreamUseCase -import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase -import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsUseCase import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.ui.NewsFeedUiState import dagger.hilt.android.lifecycle.HiltViewModel @@ -42,13 +42,13 @@ import kotlinx.coroutines.launch class ForYouViewModel @Inject constructor( syncStatusMonitor: SyncStatusMonitor, private val userDataRepository: UserDataRepository, - private val getSaveableNewsResourcesStream: GetSaveableNewsResourcesStreamUseCase, - getSortedFollowableAuthorsStream: GetSortedFollowableAuthorsStreamUseCase, - getFollowableTopicsStream: GetFollowableTopicsStreamUseCase + private val getSaveableNewsResources: GetSaveableNewsResourcesUseCase, + getSortedFollowableAuthors: GetSortedFollowableAuthorsUseCase, + getFollowableTopics: GetFollowableTopicsUseCase ) : ViewModel() { private val shouldShowOnboarding: Flow = - userDataRepository.userDataStream.map { !it.shouldHideOnboarding } + userDataRepository.userData.map { !it.shouldHideOnboarding } val isSyncing = syncStatusMonitor.isSyncing .stateIn( @@ -58,7 +58,7 @@ class ForYouViewModel @Inject constructor( ) val feedState: StateFlow = - userDataRepository.userDataStream + userDataRepository.userData .map { userData -> // If the user hasn't completed the onboarding and hasn't selected any interests // show an empty news list to clearly demonstrate that their selections affect the @@ -69,7 +69,7 @@ class ForYouViewModel @Inject constructor( ) { flowOf(NewsFeedUiState.Success(emptyList())) } else { - getSaveableNewsResourcesStream( + getSaveableNewsResources( filterTopicIds = userData.followedTopics, filterAuthorIds = userData.followedAuthors ).mapToFeedState() @@ -88,8 +88,8 @@ class ForYouViewModel @Inject constructor( val onboardingUiState: StateFlow = combine( shouldShowOnboarding, - getFollowableTopicsStream(), - getSortedFollowableAuthorsStream() + getFollowableTopics(), + getSortedFollowableAuthors() ) { shouldShowOnboarding, topics, authors -> if (shouldShowOnboarding) { OnboardingUiState.Shown( diff --git a/feature/foryou/src/test/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt b/feature/foryou/src/test/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt index daeeb46c2..82117a47e 100644 --- a/feature/foryou/src/test/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt +++ b/feature/foryou/src/test/java/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt @@ -16,9 +16,9 @@ package com.google.samples.apps.nowinandroid.feature.foryou -import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsStreamUseCase -import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase -import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsUseCase import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource @@ -59,15 +59,15 @@ class ForYouViewModelTest { private val authorsRepository = TestAuthorsRepository() private val topicsRepository = TestTopicsRepository() private val newsRepository = TestNewsRepository() - private val getSaveableNewsResourcesStreamUseCase = GetSaveableNewsResourcesStreamUseCase( + private val getSaveableNewsResourcesUseCase = GetSaveableNewsResourcesUseCase( newsRepository = newsRepository, userDataRepository = userDataRepository ) - private val getSortedFollowableAuthorsStream = GetSortedFollowableAuthorsStreamUseCase( + private val getSortedFollowableAuthors = GetSortedFollowableAuthorsUseCase( authorsRepository = authorsRepository, userDataRepository = userDataRepository ) - private val getFollowableTopicsStreamUseCase = GetFollowableTopicsStreamUseCase( + private val getFollowableTopicsUseCase = GetFollowableTopicsUseCase( topicsRepository = topicsRepository, userDataRepository = userDataRepository ) @@ -78,9 +78,9 @@ class ForYouViewModelTest { viewModel = ForYouViewModel( syncStatusMonitor = syncStatusMonitor, userDataRepository = userDataRepository, - getSaveableNewsResourcesStream = getSaveableNewsResourcesStreamUseCase, - getSortedFollowableAuthorsStream = getSortedFollowableAuthorsStream, - getFollowableTopicsStream = getFollowableTopicsStreamUseCase + getSaveableNewsResources = getSaveableNewsResourcesUseCase, + getSortedFollowableAuthors = getSortedFollowableAuthors, + getFollowableTopics = getFollowableTopicsUseCase ) } diff --git a/feature/interests/src/main/java/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt b/feature/interests/src/main/java/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt index 01d8b0d6e..68afde05b 100644 --- a/feature/interests/src/main/java/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt +++ b/feature/interests/src/main/java/com/google/samples/apps/nowinandroid/feature/interests/InterestsViewModel.kt @@ -19,8 +19,8 @@ package com.google.samples.apps.nowinandroid.feature.interests import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository -import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsStreamUseCase -import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsUseCase import com.google.samples.apps.nowinandroid.core.domain.TopicSortField import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic @@ -38,8 +38,8 @@ import kotlinx.coroutines.launch @HiltViewModel class InterestsViewModel @Inject constructor( val userDataRepository: UserDataRepository, - getFollowableTopicsStream: GetFollowableTopicsStreamUseCase, - getSortedFollowableAuthorsStream: GetSortedFollowableAuthorsStreamUseCase + getFollowableTopics: GetFollowableTopicsUseCase, + getSortedFollowableAuthors: GetSortedFollowableAuthorsUseCase ) : ViewModel() { private val _tabState = MutableStateFlow( @@ -51,8 +51,8 @@ class InterestsViewModel @Inject constructor( val tabState: StateFlow = _tabState.asStateFlow() val uiState: StateFlow = combine( - getSortedFollowableAuthorsStream(), - getFollowableTopicsStream(sortBy = TopicSortField.NAME), + getSortedFollowableAuthors(), + getFollowableTopics(sortBy = TopicSortField.NAME), InterestsUiState::Interests ).stateIn( scope = viewModelScope, diff --git a/feature/interests/src/test/java/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt b/feature/interests/src/test/java/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt index aaac504d3..a6e60980e 100644 --- a/feature/interests/src/test/java/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt +++ b/feature/interests/src/test/java/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt @@ -16,8 +16,8 @@ package com.google.samples.apps.nowinandroid.interests -import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsStreamUseCase -import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetFollowableTopicsUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSortedFollowableAuthorsUseCase import com.google.samples.apps.nowinandroid.core.domain.model.FollowableAuthor import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.model.data.Author @@ -49,12 +49,12 @@ class InterestsViewModelTest { private val userDataRepository = TestUserDataRepository() private val authorsRepository = TestAuthorsRepository() private val topicsRepository = TestTopicsRepository() - private val getFollowableTopicsStreamUseCase = GetFollowableTopicsStreamUseCase( + private val getFollowableTopicsUseCase = GetFollowableTopicsUseCase( topicsRepository = topicsRepository, userDataRepository = userDataRepository ) - private val getSortedFollowableAuthorsStream = - GetSortedFollowableAuthorsStreamUseCase( + private val getSortedFollowableAuthors = + GetSortedFollowableAuthorsUseCase( authorsRepository = authorsRepository, userDataRepository = userDataRepository ) @@ -64,8 +64,8 @@ class InterestsViewModelTest { fun setup() { viewModel = InterestsViewModel( userDataRepository = userDataRepository, - getFollowableTopicsStream = getFollowableTopicsStreamUseCase, - getSortedFollowableAuthorsStream = getSortedFollowableAuthorsStream + getFollowableTopics = getFollowableTopicsUseCase, + getSortedFollowableAuthors = getSortedFollowableAuthors ) } diff --git a/feature/settings/src/main/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt b/feature/settings/src/main/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt index fa159b555..85a7feb91 100644 --- a/feature/settings/src/main/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt +++ b/feature/settings/src/main/java/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModel.kt @@ -36,7 +36,7 @@ class SettingsViewModel @Inject constructor( private val userDataRepository: UserDataRepository, ) : ViewModel() { val settingsUiState: StateFlow = - userDataRepository.userDataStream + userDataRepository.userData .map { userData -> Success( settings = UserEditableSettings( 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..904e03110 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 @@ -22,7 +22,7 @@ import androidx.lifecycle.viewModelScope import com.google.samples.apps.nowinandroid.core.data.repository.TopicsRepository import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository import com.google.samples.apps.nowinandroid.core.decoder.StringDecoder -import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesUseCase import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.domain.model.SaveableNewsResource import com.google.samples.apps.nowinandroid.core.model.data.Topic @@ -46,12 +46,12 @@ class TopicViewModel @Inject constructor( private val userDataRepository: UserDataRepository, topicsRepository: TopicsRepository, // newsRepository: NewsRepository, - getSaveableNewsResourcesStream: GetSaveableNewsResourcesStreamUseCase + getSaveableNewsResources: GetSaveableNewsResourcesUseCase ) : ViewModel() { private val topicArgs: TopicArgs = TopicArgs(savedStateHandle, stringDecoder) - val topicUiState: StateFlow = topicUiStateStream( + val topicUiState: StateFlow = topicUiState( topicId = topicArgs.topicId, userDataRepository = userDataRepository, topicsRepository = topicsRepository @@ -62,10 +62,10 @@ class TopicViewModel @Inject constructor( initialValue = TopicUiState.Loading ) - val newUiState: StateFlow = newsUiStateStream( + val newUiState: StateFlow = newsUiState( topicId = topicArgs.topicId, userDataRepository = userDataRepository, - getSaveableNewsResourcesStream = getSaveableNewsResourcesStream + getSaveableNewsResources = getSaveableNewsResources ) .stateIn( scope = viewModelScope, @@ -86,24 +86,24 @@ class TopicViewModel @Inject constructor( } } -private fun topicUiStateStream( +private fun topicUiState( topicId: String, userDataRepository: UserDataRepository, topicsRepository: TopicsRepository, ): Flow { // Observe the followed topics, as they could change over time. - val followedTopicIdsStream: Flow> = - userDataRepository.userDataStream + val followedTopicIds: Flow> = + userDataRepository.userData .map { it.followedTopics } // Observe topic information - val topicStream: Flow = topicsRepository.getTopic( + val topic: Flow = topicsRepository.getTopic( id = topicId ) return combine( - followedTopicIdsStream, - topicStream, + followedTopicIds, + topic, ::Pair ) .asResult() @@ -129,24 +129,24 @@ private fun topicUiStateStream( } } -private fun newsUiStateStream( +private fun newsUiState( topicId: String, - getSaveableNewsResourcesStream: GetSaveableNewsResourcesStreamUseCase, + getSaveableNewsResources: GetSaveableNewsResourcesUseCase, userDataRepository: UserDataRepository, ): Flow { // Observe news - val newsStream: Flow> = getSaveableNewsResourcesStream( + val news: Flow> = getSaveableNewsResources( filterAuthorIds = emptySet(), filterTopicIds = setOf(element = topicId), ) // Observe bookmarks - val bookmarkStream: Flow> = userDataRepository.userDataStream + val bookmark: Flow> = userDataRepository.userData .map { it.bookmarkedNewsResources } return combine( - newsStream, - bookmarkStream, + news, + bookmark, ::Pair ) .asResult() diff --git a/feature/topic/src/test/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt b/feature/topic/src/test/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt index 17d7b45ee..3dc2551b6 100644 --- a/feature/topic/src/test/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt +++ b/feature/topic/src/test/java/com/google/samples/apps/nowinandroid/feature/topic/TopicViewModelTest.kt @@ -17,7 +17,7 @@ package com.google.samples.apps.nowinandroid.feature.topic import androidx.lifecycle.SavedStateHandle -import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesStreamUseCase +import com.google.samples.apps.nowinandroid.core.domain.GetSaveableNewsResourcesUseCase import com.google.samples.apps.nowinandroid.core.domain.model.FollowableTopic import com.google.samples.apps.nowinandroid.core.model.data.NewsResource import com.google.samples.apps.nowinandroid.core.model.data.NewsResourceType.Video @@ -53,7 +53,7 @@ class TopicViewModelTest { private val userDataRepository = TestUserDataRepository() private val topicsRepository = TestTopicsRepository() private val newsRepository = TestNewsRepository() - private val getSaveableNewsResourcesStreamUseCase = GetSaveableNewsResourcesStreamUseCase( + private val getSaveableNewsResourcesUseCase = GetSaveableNewsResourcesUseCase( newsRepository = newsRepository, userDataRepository = userDataRepository ) @@ -66,7 +66,7 @@ class TopicViewModelTest { stringDecoder = FakeStringDecoder(), userDataRepository = userDataRepository, topicsRepository = topicsRepository, - getSaveableNewsResourcesStream = getSaveableNewsResourcesStreamUseCase + getSaveableNewsResources = getSaveableNewsResourcesUseCase ) }