ui: revert to always show subscriptions indicator, but make it light blue instead of gray for new users (fresh installation with no chats) (#4604)

This commit is contained in:
spaced4ndy
2024-08-06 20:31:45 +04:00
committed by GitHub
parent 7441ed9892
commit d31dedf132
4 changed files with 42 additions and 47 deletions
@@ -266,19 +266,13 @@ struct SubsStatusIndicator: View {
@AppStorage(DEFAULT_SHOW_SUBSCRIPTION_PERCENTAGE) private var showSubscriptionPercentage = false
var body: some View {
ZStack {
if subs.total == 0 && !hasSess {
EmptyView()
} else {
Button {
showServersSummary = true
} label: {
HStack(spacing: 4) {
SubscriptionStatusIndicatorView(subs: subs, hasSess: hasSess)
if showSubscriptionPercentage {
SubscriptionStatusPercentageView(subs: subs, hasSess: hasSess)
}
}
Button {
showServersSummary = true
} label: {
HStack(spacing: 4) {
SubscriptionStatusIndicatorView(subs: subs, hasSess: hasSess)
if showSubscriptionPercentage {
SubscriptionStatusPercentageView(subs: subs, hasSess: hasSess)
}
}
}
@@ -448,19 +448,23 @@ func subscriptionStatusColorAndPercentage(_ online: Bool, _ onionHosts: OnionHos
let noConnColorAndPercent: (Color, Double, Double, Double) = (Color(uiColor: .tertiaryLabel), 1, 1, 0)
let activeSubsRounded = roundedToQuarter(subs.shareOfActive)
return online && subs.total > 0
? (
subs.ssActive == 0
? (
hasSess ? (activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive) : noConnColorAndPercent
return !online
? noConnColorAndPercent
: (
subs.total == 0 && !hasSess
? (activeColor, 0, 0.33, 0) // On freshly installed app (without chats) and on app start
: (
subs.ssActive == 0
? (
hasSess ? (activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive) : noConnColorAndPercent
)
: ( // ssActive > 0
hasSess
? (activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive)
: (.orange, activeSubsRounded, subs.shareOfActive, subs.shareOfActive) // This would mean implementation error
)
)
: ( // ssActive > 0
hasSess
? (activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive)
: (.orange, activeSubsRounded, subs.shareOfActive, subs.shareOfActive) // This would mean implementation error
)
)
: noConnColorAndPercent
}
struct SMPServerSummaryView: View {
@@ -370,12 +370,8 @@ fun SubscriptionStatusIndicator(click: (() -> Unit)) {
}
}
if (subs.total == 0 && !hasSess) {
Box {}
} else {
SimpleButtonFrame(click = click) {
SubscriptionStatusIndicatorView(subs = subs, hasSess = hasSess)
}
SimpleButtonFrame(click = click) {
SubscriptionStatusIndicatorView(subs = subs, hasSess = hasSess)
}
}
@@ -68,7 +68,6 @@ enum class SubscriptionColorType {
data class SubscriptionStatus(
val color: SubscriptionColorType,
val variableValue: Float,
val opacity: Float,
val statusPercent: Float
)
@@ -78,7 +77,6 @@ fun subscriptionStatusColorAndPercentage(
subs: SMPServerSubs,
hasSess: Boolean
): SubscriptionStatus {
fun roundedToQuarter(n: Float): Float = when {
n >= 1 -> 1f
n <= 0 -> 0f
@@ -86,23 +84,26 @@ fun subscriptionStatusColorAndPercentage(
}
val activeColor: SubscriptionColorType = if (socksProxy != null) SubscriptionColorType.ACTIVE_SOCKS_PROXY else SubscriptionColorType.ACTIVE
val noConnColorAndPercent = SubscriptionStatus(SubscriptionColorType.DISCONNECTED, 1f, 1f, 0f)
val noConnColorAndPercent = SubscriptionStatus(SubscriptionColorType.DISCONNECTED, 1f, 0f)
val activeSubsRounded = roundedToQuarter(subs.shareOfActive)
return if (online && subs.total > 0) {
if (subs.ssActive == 0) {
if (hasSess)
SubscriptionStatus(activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive)
else
noConnColorAndPercent
} else { // ssActive > 0
if (hasSess)
SubscriptionStatus(activeColor, activeSubsRounded, subs.shareOfActive, subs.shareOfActive)
else
// This would mean implementation error
SubscriptionStatus(SubscriptionColorType.ACTIVE_DISCONNECTED, activeSubsRounded, subs.shareOfActive, subs.shareOfActive)
}
} else noConnColorAndPercent
return if (!online)
noConnColorAndPercent
else if (subs.total == 0 && !hasSess)
// On freshly installed app (without chats) and on app start
SubscriptionStatus(activeColor, 0f, 0f)
else if (subs.ssActive == 0) {
if (hasSess)
SubscriptionStatus(activeColor, activeSubsRounded, subs.shareOfActive)
else
noConnColorAndPercent
} else { // ssActive > 0
if (hasSess)
SubscriptionStatus(activeColor, activeSubsRounded, subs.shareOfActive)
else
// This would mean implementation error
SubscriptionStatus(SubscriptionColorType.ACTIVE_DISCONNECTED, activeSubsRounded, subs.shareOfActive)
}
}
@Composable