Change-Id: Iac1e30f357149fc4c6076d688088f6a54fce73da
pull/1238/head
Jaehwa Noh 1 year ago
parent ee8e3aeba6
commit 5f124ead18

@ -16,6 +16,7 @@
package com.google.samples.apps.nowinandroid.core.data.repository package com.google.samples.apps.nowinandroid.core.data.repository
import androidx.tracing.trace
import com.google.samples.apps.nowinandroid.core.database.dao.NewsResourceDao import com.google.samples.apps.nowinandroid.core.database.dao.NewsResourceDao
import com.google.samples.apps.nowinandroid.core.database.dao.NewsResourceFtsDao import com.google.samples.apps.nowinandroid.core.database.dao.NewsResourceFtsDao
import com.google.samples.apps.nowinandroid.core.database.dao.TopicDao import com.google.samples.apps.nowinandroid.core.database.dao.TopicDao
@ -78,10 +79,12 @@ internal class DefaultSearchContentsRepository @Inject constructor(
.distinctUntilChanged() .distinctUntilChanged()
.flatMapLatest(topicDao::getTopicEntities) .flatMapLatest(topicDao::getTopicEntities)
return combine(newsResourcesFlow, topicsFlow) { newsResources, topics -> return combine(newsResourcesFlow, topicsFlow) { newsResources, topics ->
trace("DefaultSearchContentsRepository.searchContents") {
SearchResult( SearchResult(
topics = topics.map { it.asExternalModel() }, topics = topics.map { it.asExternalModel() },
newsResources = newsResources.map { it.asExternalModel() }, newsResources = newsResources.map { it.asExternalModel() },
) )
}
}.flowOn(defaultDispatcher) }.flowOn(defaultDispatcher)
} }
@ -90,6 +93,8 @@ internal class DefaultSearchContentsRepository @Inject constructor(
newsResourceFtsDao.getCount(), newsResourceFtsDao.getCount(),
topicFtsDao.getCount(), topicFtsDao.getCount(),
) { newsResourceCount, topicsCount -> ) { newsResourceCount, topicsCount ->
trace("DefaultSearchContentsRepository.getSearchContentsCount") {
newsResourceCount + topicsCount newsResourceCount + topicsCount
}
}.flowOn(defaultDispatcher) }.flowOn(defaultDispatcher)
} }

@ -16,6 +16,7 @@
package com.google.samples.apps.nowinandroid.core.domain package com.google.samples.apps.nowinandroid.core.domain
import androidx.tracing.trace
import com.google.samples.apps.nowinandroid.core.data.repository.TopicsRepository 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.data.repository.UserDataRepository
import com.google.samples.apps.nowinandroid.core.domain.TopicSortField.NAME import com.google.samples.apps.nowinandroid.core.domain.TopicSortField.NAME
@ -46,6 +47,7 @@ class GetFollowableTopicsUseCase @Inject constructor(
userDataRepository.userData, userDataRepository.userData,
topicsRepository.getTopics(), topicsRepository.getTopics(),
) { userData, topics -> ) { userData, topics ->
trace("GetFollowableTopicsUseCase.invoke") {
val followedTopics = topics val followedTopics = topics
.map { topic -> .map { topic ->
FollowableTopic( FollowableTopic(
@ -57,6 +59,7 @@ class GetFollowableTopicsUseCase @Inject constructor(
NAME -> followedTopics.sortedBy { it.topic.name } NAME -> followedTopics.sortedBy { it.topic.name }
else -> followedTopics else -> followedTopics
} }
}
}.flowOn(defaultDispatcher) }.flowOn(defaultDispatcher)
} }

@ -16,6 +16,7 @@
package com.google.samples.apps.nowinandroid.core.domain package com.google.samples.apps.nowinandroid.core.domain
import androidx.tracing.trace
import com.google.samples.apps.nowinandroid.core.data.repository.SearchContentsRepository import com.google.samples.apps.nowinandroid.core.data.repository.SearchContentsRepository
import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository import com.google.samples.apps.nowinandroid.core.data.repository.UserDataRepository
import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
@ -52,6 +53,7 @@ private fun Flow<SearchResult>.mapToUserSearchResult(
defaultDispatcher: CoroutineDispatcher, defaultDispatcher: CoroutineDispatcher,
): Flow<UserSearchResult> = ): Flow<UserSearchResult> =
combine(userDataStream) { searchResult, userData -> combine(userDataStream) { searchResult, userData ->
trace("Flow<SearchResult>.mapToUserSearchResult") {
UserSearchResult( UserSearchResult(
topics = searchResult.topics.map { topic -> topics = searchResult.topics.map { topic ->
FollowableTopic( FollowableTopic(
@ -66,4 +68,5 @@ private fun Flow<SearchResult>.mapToUserSearchResult(
) )
}, },
) )
}
}.flowOn(defaultDispatcher) }.flowOn(defaultDispatcher)

Loading…
Cancel
Save