Skip to content

Commit

Permalink
Merge pull request #10430 from wordpress-mobile/feature/fix_follower_…
Browse files Browse the repository at this point in the history
…totals_card

Feature/fix follower totals card
  • Loading branch information
khaykov committed Aug 22, 2019
2 parents 2b1ccf7 + ae5eab1 commit 78f11d9
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package org.wordpress.android.ui.stats.refresh.lists.sections.insights.usecases

import android.view.View
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.async
Expand All @@ -21,6 +22,7 @@ import org.wordpress.android.ui.stats.refresh.lists.sections.insights.usecases.F
import org.wordpress.android.ui.stats.refresh.lists.sections.insights.usecases.FollowerTotalsUseCase.FollowerType.SOCIAL
import org.wordpress.android.ui.stats.refresh.lists.sections.insights.usecases.FollowerTotalsUseCase.FollowerType.WP_COM
import org.wordpress.android.ui.stats.refresh.utils.ContentDescriptionHelper
import org.wordpress.android.ui.stats.refresh.utils.ItemPopupMenuHandler
import org.wordpress.android.ui.stats.refresh.utils.StatsSiteProvider
import org.wordpress.android.ui.stats.refresh.utils.toFormattedString
import javax.inject.Inject
Expand All @@ -33,10 +35,15 @@ class FollowerTotalsUseCase
private val followersStore: FollowersStore,
private val publicizeStore: PublicizeStore,
private val statsSiteProvider: StatsSiteProvider,
private val contentDescriptionHelper: ContentDescriptionHelper
private val contentDescriptionHelper: ContentDescriptionHelper,
private val popupMenuHandler: ItemPopupMenuHandler
) : StatelessUseCase<Map<FollowerType, Int>>(FOLLOWER_TOTALS, mainDispatcher) {
override fun buildLoadingItem(): List<BlockListItem> = listOf(Title(R.string.stats_view_follower_totals))

override fun buildEmptyItem(): List<BlockListItem> {
return listOf(buildTitle(), Empty())
}

override suspend fun loadCachedData(): Map<FollowerType, Int>? {
val wpComFollowers = followersStore.getWpComFollowers(statsSiteProvider.siteModel, LimitMode.Top(0))
val emailFollowers = followersStore.getEmailFollowers(statsSiteProvider.siteModel, LimitMode.Top(0))
Expand Down Expand Up @@ -135,7 +142,7 @@ class FollowerTotalsUseCase

override fun buildUiModel(domainModel: Map<FollowerType, Int>): List<BlockListItem> {
val items = mutableListOf<BlockListItem>()
items.add(Title(R.string.stats_view_follower_totals))
items.add(buildTitle())

if (domainModel.isNotEmpty()) {
domainModel.entries.forEach {
Expand All @@ -159,5 +166,11 @@ class FollowerTotalsUseCase
return items
}

private fun buildTitle() = Title(R.string.stats_view_follower_totals, menuAction = this::onMenuClick)

private fun onMenuClick(view: View) {
popupMenuHandler.onMenuClick(view, type)
}

enum class FollowerType { WP_COM, EMAIL, SOCIAL }
}
2 changes: 1 addition & 1 deletion WordPress/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -930,7 +930,7 @@
<string name="stats_view_search_terms">Search Terms</string>
<string name="stats_view_publicize">Publicize</string>
<string name="stats_view_followers">Followers</string>
<string name="stats_view_follower_totals">Followers Totals</string>
<string name="stats_view_follower_totals">Follower Totals</string>

<!-- stats: followers -->
<string name="stats_followers_seconds_ago">seconds ago</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,15 @@ import org.wordpress.android.ui.stats.refresh.lists.sections.BlockListItem.Title
import org.wordpress.android.ui.stats.refresh.lists.sections.BlockListItem.Type.LIST_ITEM_WITH_ICON
import org.wordpress.android.ui.stats.refresh.lists.sections.BlockListItem.Type.TITLE
import org.wordpress.android.ui.stats.refresh.utils.ContentDescriptionHelper
import org.wordpress.android.ui.stats.refresh.utils.ItemPopupMenuHandler
import org.wordpress.android.ui.stats.refresh.utils.StatsSiteProvider

class FollowerTotalsUseCaseTest : BaseUnitTest() {
@Mock lateinit var followersStore: FollowersStore
@Mock lateinit var publicizeStore: PublicizeStore
@Mock lateinit var statsSiteProvider: StatsSiteProvider
@Mock lateinit var contentDescriptionHelper: ContentDescriptionHelper
@Mock lateinit var popupMenuHandler: ItemPopupMenuHandler
@Mock lateinit var site: SiteModel
private lateinit var useCase: FollowerTotalsUseCase

Expand All @@ -53,7 +55,8 @@ class FollowerTotalsUseCaseTest : BaseUnitTest() {
followersStore,
publicizeStore,
statsSiteProvider,
contentDescriptionHelper
contentDescriptionHelper,
popupMenuHandler
)
whenever(statsSiteProvider.siteModel).thenReturn(site)

Expand All @@ -67,7 +70,7 @@ class FollowerTotalsUseCaseTest : BaseUnitTest() {
}

@Test
fun `maps follower totals to U`() = test {
fun `maps follower totals to UI model`() = test {
val forced = false
val refresh = true

Expand Down Expand Up @@ -107,6 +110,7 @@ class FollowerTotalsUseCaseTest : BaseUnitTest() {
private fun assertTitle(item: BlockListItem) {
assertThat(item.type).isEqualTo(TITLE)
assertThat((item as Title).textResource).isEqualTo(R.string.stats_view_follower_totals)
assertThat(item.menuAction).isNotNull
}

private suspend fun loadFollowerTotalsData(refresh: Boolean, forced: Boolean): UseCaseModel {
Expand Down

0 comments on commit 78f11d9

Please sign in to comment.