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
import androidx.tracing.trace
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.TopicDao
@ -78,10 +79,12 @@ internal class DefaultSearchContentsRepository @Inject constructor(
.distinctUntilChanged()
.flatMapLatest(topicDao::getTopicEntities)
return combine(newsResourcesFlow, topicsFlow) { newsResources, topics ->
SearchResult(
topics = topics.map { it.asExternalModel() },
newsResources = newsResources.map { it.asExternalModel() },
)
trace("DefaultSearchContentsRepository.searchContents") {
SearchResult(
topics = topics.map { it.asExternalModel() },
newsResources = newsResources.map { it.asExternalModel() },
)
}
}.flowOn(defaultDispatcher)
}
@ -90,6 +93,8 @@ internal class DefaultSearchContentsRepository @Inject constructor(
newsResourceFtsDao.getCount(),
topicFtsDao.getCount(),
) { newsResourceCount, topicsCount ->
newsResourceCount + topicsCount
trace("DefaultSearchContentsRepository.getSearchContentsCount") {
newsResourceCount + topicsCount
}
}.flowOn(defaultDispatcher)
}

@ -16,6 +16,7 @@
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.UserDataRepository
import com.google.samples.apps.nowinandroid.core.domain.TopicSortField.NAME
@ -46,16 +47,18 @@ class GetFollowableTopicsUseCase @Inject constructor(
userDataRepository.userData,
topicsRepository.getTopics(),
) { userData, topics ->
val followedTopics = topics
.map { topic ->
FollowableTopic(
topic = topic,
isFollowed = topic.id in userData.followedTopics,
)
trace("GetFollowableTopicsUseCase.invoke") {
val followedTopics = topics
.map { topic ->
FollowableTopic(
topic = topic,
isFollowed = topic.id in userData.followedTopics,
)
}
when (sortBy) {
NAME -> followedTopics.sortedBy { it.topic.name }
else -> followedTopics
}
when (sortBy) {
NAME -> followedTopics.sortedBy { it.topic.name }
else -> followedTopics
}
}.flowOn(defaultDispatcher)
}

@ -16,6 +16,7 @@
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.UserDataRepository
import com.google.samples.apps.nowinandroid.core.model.data.FollowableTopic
@ -52,18 +53,20 @@ private fun Flow<SearchResult>.mapToUserSearchResult(
defaultDispatcher: CoroutineDispatcher,
): Flow<UserSearchResult> =
combine(userDataStream) { searchResult, userData ->
UserSearchResult(
topics = searchResult.topics.map { topic ->
FollowableTopic(
topic = topic,
isFollowed = topic.id in userData.followedTopics,
)
},
newsResources = searchResult.newsResources.map { news ->
UserNewsResource(
newsResource = news,
userData = userData,
)
},
)
trace("Flow<SearchResult>.mapToUserSearchResult") {
UserSearchResult(
topics = searchResult.topics.map { topic ->
FollowableTopic(
topic = topic,
isFollowed = topic.id in userData.followedTopics,
)
},
newsResources = searchResult.newsResources.map { news ->
UserNewsResource(
newsResource = news,
userData = userData,
)
},
)
}
}.flowOn(defaultDispatcher)

Loading…
Cancel
Save