From c7a6c6596040a323898b24927a82bd02c132edee Mon Sep 17 00:00:00 2001 From: "Evgeny @ SimpleX Chat" <259188159+evgeny-simplex@users.noreply.github.com> Date: Wed, 28 Oct 2026 17:46:46 +0000 Subject: [PATCH] ios: badge previews show fixed prices (#7917) * ios: badge previews show fixed prices * ci: references of badge previews with prices and of channel members * ios: badge price list computes annual savings from the amounts * ios: badge previews pass what is for sale and earlier subscriptions with the prices --- apps/ios/Shared/Views/Badges/BadgeStore.swift | 52 ++++++++++++++---- .../Views/Badges/BadgesCheckOrderView.swift | 22 ++++++-- .../Views/Badges/BadgesHowLongView.swift | 21 +++++-- .../ChannelMembersView-dark-large.png | Bin 16278 -> 14893 bytes .../ChannelMembersView-light-large.png | Bin 17627 -> 15965 bytes 5 files changed, 73 insertions(+), 22 deletions(-) diff --git a/apps/ios/Shared/Views/Badges/BadgeStore.swift b/apps/ios/Shared/Views/Badges/BadgeStore.swift index 68a49bb6da..558f5343f2 100644 --- a/apps/ios/Shared/Views/Badges/BadgeStore.swift +++ b/apps/ios/Shared/Views/Badges/BadgeStore.swift @@ -53,6 +53,38 @@ enum BadgePrice { } } +struct BadgePriceList { + let oneMonth: BadgePrice + let monthly: BadgePrice + let annual: BadgePrice + let monthlyAmount: Decimal? + let annualAmount: Decimal? + let subscriptionsForSale: Bool + let subscribedBefore: Bool + + func price(_ period: BadgePeriod) -> BadgePrice { + switch period { + case .oneMonth: oneMonth + case .monthly: monthly + case .annual: annual + } + } + + func forSale(_ period: BadgePeriod) -> Bool { + period == .oneMonth || subscriptionsForSale + } + + // percentage the annual subscription saves against 12 monthly payments + var annualSavings: Int? { + guard let monthlyAmount, let annualAmount else { return nil } + let year = monthlyAmount * 12 + guard year > 0, annualAmount < year else { return nil } + let saved = (year - annualAmount) / year * 100 + let percent = Int(NSDecimalNumber(decimal: saved).doubleValue.rounded()) + return percent > 0 ? percent : nil + } +} + struct BadgeStoreReceipt { // the signed token the badge service verifies - never transaction.jsonRepresentation let jws: String @@ -169,16 +201,16 @@ final class BadgeStore: ObservableObject { } } - // percentage the annual subscription saves against 12 monthly payments - func annualSavings(_ level: BadgeLevel) -> Int? { - guard let monthly = products[badgeProductId(level, .monthly)], - let annual = products[badgeProductId(level, .annual)] - else { return nil } - let year = monthly.price * 12 - guard year > 0, annual.price < year else { return nil } - let saved = (year - annual.price) / year * 100 - let percent = Int(NSDecimalNumber(decimal: saved).doubleValue.rounded()) - return percent > 0 ? percent : nil + func priceList(_ level: BadgeLevel, compact: Bool = true) -> BadgePriceList { + BadgePriceList( + oneMonth: price(level, .oneMonth, compact: compact), + monthly: price(level, .monthly, compact: compact), + annual: price(level, .annual, compact: compact), + monthlyAmount: products[badgeProductId(level, .monthly)]?.price, + annualAmount: products[badgeProductId(level, .annual)]?.price, + subscriptionsForSale: forSale(level, .monthly), + subscribedBefore: subscribedBefore + ) } func load() async { diff --git a/apps/ios/Shared/Views/Badges/BadgesCheckOrderView.swift b/apps/ios/Shared/Views/Badges/BadgesCheckOrderView.swift index 2684629d43..3c3ee66318 100644 --- a/apps/ios/Shared/Views/Badges/BadgesCheckOrderView.swift +++ b/apps/ios/Shared/Views/Badges/BadgesCheckOrderView.swift @@ -19,11 +19,16 @@ struct BadgesCheckOrderView: View { let level: BadgeLevel let period: BadgePeriod var startDate = Date() + var priceList: BadgePriceList? = nil @State private var purchasing = false @State private var privacyPolicyActive = false // presented from this view, not AlertManager: its host is behind the sheet these views open in @State private var alert: SomeAlert? + private var prices: BadgePriceList { + priceList ?? store.priceList(level, compact: false) + } + var body: some View { GeometryReader { g in ScrollView { @@ -41,7 +46,7 @@ struct BadgesCheckOrderView: View { Divider() .padding(.top, 8) .padding(.bottom, 6) - orderRow("Total", period.priceText(store.price(level, period, compact: false))) + orderRow("Total", period.priceText(prices.price(period))) } .padding(.horizontal, 24) .padding(.vertical, 12) @@ -49,7 +54,7 @@ struct BadgesCheckOrderView: View { .clipShape(RoundedRectangle(cornerRadius: 16)) .padding(.top, 20) - if case let .price(p) = store.price(level, period, compact: false) { + if case let .price(p) = prices.price(period) { switch period { case .monthly: footnote("Payment is charged to your Apple ID when you confirm the purchase. The subscription renews automatically at \(p) per month unless you cancel it at least 24 hours before the end of the current period. You can manage and cancel it in your App Store account settings.") case .annual: footnote("Payment is charged to your Apple ID when you confirm the purchase. The subscription renews automatically at \(p) per year unless you cancel it at least 24 hours before the end of the current period. You can manage and cancel it in your App Store account settings.") @@ -57,7 +62,7 @@ struct BadgesCheckOrderView: View { } } - if !store.forSale(level, period) && store.subscribedBefore { + if !prices.forSale(period) && prices.subscribedBefore { footnote("This Apple ID already has a badge subscription. Only the profile that bought it can continue it.") } @@ -124,8 +129,8 @@ struct BadgesCheckOrderView: View { } private func payButton() -> some View { - let price = store.price(level, period, compact: false) - let disabled = !price.canPurchase || purchasing || !store.canBuy(chatModel.currentUser?.userId) || !store.forSale(level, period) || !AppStore.canMakePayments + let price = prices.price(period) + let disabled = !price.canPurchase || purchasing || !store.canBuy(chatModel.currentUser?.userId) || !prices.forSale(period) || !AppStore.canMakePayments return Button { purchase() } label: { @@ -212,7 +217,12 @@ struct RestorePurchasesButton: View { struct BadgesCheckOrderView_Previews: PreviewProvider { static var previews: some View { NavigationView { - BadgesCheckOrderView(level: .supporter, period: .oneMonth, startDate: previewDate) + BadgesCheckOrderView( + level: .supporter, + period: .oneMonth, + startDate: previewDate, + priceList: BadgePriceList(oneMonth: .price("$7.00"), monthly: .price("$7.00"), annual: .price("$42.00"), monthlyAmount: 7, annualAmount: 42, subscriptionsForSale: true, subscribedBefore: false) + ) } } } diff --git a/apps/ios/Shared/Views/Badges/BadgesHowLongView.swift b/apps/ios/Shared/Views/Badges/BadgesHowLongView.swift index 3d3d7559ac..fb3dbb077f 100644 --- a/apps/ios/Shared/Views/Badges/BadgesHowLongView.swift +++ b/apps/ios/Shared/Views/Badges/BadgesHowLongView.swift @@ -75,12 +75,17 @@ struct BadgesHowLongView: View { @ObservedObject private var badgeModel = BadgeModel.shared let level: BadgeLevel var startDate = Date() + var priceList: BadgePriceList? = nil @State private var chosenPeriod: BadgePeriod? = nil @State private var continueActive = false + private var prices: BadgePriceList { + priceList ?? store.priceList(level) + } + // monthly once subscriptions turn out to be for sale, unless a period was chosen before that private var selectedPeriod: BadgePeriod { - chosenPeriod ?? (store.forSale(level, .monthly) ? .monthly : .oneMonth) + chosenPeriod ?? (prices.forSale(.monthly) ? .monthly : .oneMonth) } var body: some View { @@ -112,7 +117,7 @@ struct BadgesHowLongView: View { } .fixedSize(horizontal: false, vertical: true) - if !store.forSale(level, .monthly) && store.subscribedBefore { + if !prices.forSale(.monthly) && prices.subscribedBefore { Text("This Apple ID already has a badge subscription. Only the profile that bought it can continue it.") .font(.footnote) .foregroundColor(theme.colors.secondary) @@ -142,7 +147,7 @@ struct BadgesHowLongView: View { private func periodCard(_ period: BadgePeriod) -> some View { let isSelected = period == selectedPeriod - let forSale = store.forSale(level, period) + let forSale = prices.forSale(period) return Button { chosenPeriod = period } label: { @@ -155,7 +160,7 @@ struct BadgesHowLongView: View { .opacity(forSale ? 1 : 0.4) Text(period.label) .font(.subheadline) - period.priceText(store.price(level, period)) + period.priceText(prices.price(period)) .font(.headline) if let percent = savingsPercent(period) { Text("\(percent)% off") @@ -180,7 +185,7 @@ struct BadgesHowLongView: View { } private func savingsPercent(_ period: BadgePeriod) -> Int? { - period == .annual ? store.annualSavings(level) : nil + period == .annual ? prices.annualSavings : nil } private func continueButton() -> some View { @@ -234,7 +239,11 @@ struct BadgeBillingFooter: View { struct BadgesHowLongView_Previews: PreviewProvider { static var previews: some View { NavigationView { - BadgesHowLongView(level: .supporter, startDate: previewDate) + BadgesHowLongView( + level: .supporter, + startDate: previewDate, + priceList: BadgePriceList(oneMonth: .price("$7"), monthly: .price("$7"), annual: .price("$42"), monthlyAmount: 7, annualAmount: 42, subscriptionsForSale: true, subscribedBefore: false) + ) } } } diff --git a/apps/ios/SimpleX Snapshots/References/ChannelMembersView-dark-large.png b/apps/ios/SimpleX Snapshots/References/ChannelMembersView-dark-large.png index 817170c0cddb798456e373bbe0156f7b511d9d43..d3ac0fd9780c42fd6dbcdf1eed6133a79ac1af8e 100644 GIT binary patch literal 14893 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 literal 16278 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 literal 17627 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