Fix a bunch UX bugs for donor badges.

This commit is contained in:
Alex Hart
2021-11-11 13:46:38 -04:00
committed by GitHub
parent 5047fc54f2
commit ca24682366
37 changed files with 450 additions and 47 deletions

View File

@@ -44,8 +44,15 @@ class BadgeImageView @JvmOverloads constructor(
fun setBadgeFromRecipient(recipient: Recipient?, glideRequests: GlideRequests) {
if (recipient == null || recipient.badges.isEmpty()) {
setBadge(null, glideRequests)
} else if (recipient.isSelf) {
val badge = recipient.featuredBadge
if (badge == null || !badge.visible || badge.isExpired()) {
setBadge(null, glideRequests)
} else {
setBadge(badge, glideRequests)
}
} else {
setBadge(recipient.badges[0], glideRequests)
setBadge(recipient.featuredBadge, glideRequests)
}
}

View File

@@ -68,10 +68,11 @@ class BadgesOverviewFragment : DSLSettingsFragment(
fadedBadgeId = state.fadedBadgeId
)
switchPref(
asyncSwitchPref(
title = DSLSettingsText.from(R.string.BadgesOverviewFragment__display_badges_on_profile),
isChecked = state.displayBadgesOnProfile,
isEnabled = state.stage == BadgesOverviewState.Stage.READY && state.hasUnexpiredBadges,
isProcessing = state.stage == BadgesOverviewState.Stage.UPDATING_BADGE_DISPLAY_STATE,
onClick = {
viewModel.setDisplayBadgesOnProfile(!state.displayBadgesOnProfile)
}

View File

@@ -15,6 +15,6 @@ data class BadgesOverviewState(
enum class Stage {
INIT,
READY,
UPDATING
UPDATING_BADGE_DISPLAY_STATE
}
}

View File

@@ -61,6 +61,7 @@ class BadgesOverviewViewModel(
}
fun setDisplayBadgesOnProfile(displayBadgesOnProfile: Boolean) {
store.update { it.copy(stage = BadgesOverviewState.Stage.UPDATING_BADGE_DISPLAY_STATE) }
disposables += badgeRepository.setVisibilityForAllBadges(displayBadgesOnProfile)
.subscribe(
{