diff --git a/Signal/src/ViewControllers/AppSettings/AppSettingsViewController.swift b/Signal/src/ViewControllers/AppSettings/AppSettingsViewController.swift index f4d7cf87ae..46e1e383ae 100644 --- a/Signal/src/ViewControllers/AppSettings/AppSettingsViewController.swift +++ b/Signal/src/ViewControllers/AppSettings/AppSettingsViewController.swift @@ -245,7 +245,7 @@ class AppSettingsViewController: OWSTableViewController2 { self?.showInviteFlow() } )) - if FeatureFlags.subscriptions { + if RemoteConfig.donorBadgeAcquisition { if DonationUtilities.isApplePayAvailable { section4.add(.disclosureItem( icon: .settingsDonate, diff --git a/Signal/src/ViewControllers/AppSettings/Profile/ProfileSettingsViewController.swift b/Signal/src/ViewControllers/AppSettings/Profile/ProfileSettingsViewController.swift index 0c1c31dd3b..e83886bc55 100644 --- a/Signal/src/ViewControllers/AppSettings/Profile/ProfileSettingsViewController.swift +++ b/Signal/src/ViewControllers/AppSettings/Profile/ProfileSettingsViewController.swift @@ -123,7 +123,7 @@ class ProfileSettingsViewController: OWSTableViewController2 { self.presentFormSheet(OWSNavigationController(rootViewController: vc), animated: true) } )) - if FeatureFlags.configureBadges, !allBadges.isEmpty { + if RemoteConfig.donorBadgeDisplay, !allBadges.isEmpty { mainSection.add(.disclosureItem( icon: .settingsBadges, name: NSLocalizedString( diff --git a/SignalServiceKit/src/Network/API/SignalServiceProfile.swift b/SignalServiceKit/src/Network/API/SignalServiceProfile.swift index fbba442273..0292269dda 100644 --- a/SignalServiceKit/src/Network/API/SignalServiceProfile.swift +++ b/SignalServiceKit/src/Network/API/SignalServiceProfile.swift @@ -89,7 +89,7 @@ public class SignalServiceProfile: NSObject { self.credential = try params.optionalBase64EncodedData(key: "credential") - if FeatureFlags.fetchAndDisplayBadges, + if RemoteConfig.donorBadgeDisplay, let badgeArray: [[String: Any]] = try params.optional(key: "badges") { self.badges = badgeArray.compactMap { do { diff --git a/SignalServiceKit/src/Util/FeatureFlags.swift b/SignalServiceKit/src/Util/FeatureFlags.swift index 527792f7ba..3af57c82de 100644 --- a/SignalServiceKit/src/Util/FeatureFlags.swift +++ b/SignalServiceKit/src/Util/FeatureFlags.swift @@ -233,15 +233,6 @@ public class FeatureFlags: BaseFlags { @objc public static let canUseNativeWebsocket = false - @objc - public static let fetchAndDisplayBadges = build.includes(.qa) - - @objc - public static let configureBadges = build.includes(.qa) - - @objc - public static let subscriptions = build.includes(.qa) - @objc public static var notificationServiceExtension: Bool { // The CallKit APIs for the NSE are only available from iOS 14.5 and on, @@ -471,6 +462,12 @@ public class DebugFlags: BaseFlags { @objc public static let forceViewedReceiptSending = true + @objc + public static let forceDonorBadgeDisplay = build.includes(.beta) + + @objc + public static let forceDonorBadgeAcquisition = build.includes(.beta) + @objc public static let extraDebugLogs = build.includes(.openPreview) diff --git a/SignalServiceKit/src/Util/RemoteConfigManager.swift b/SignalServiceKit/src/Util/RemoteConfigManager.swift index 6e93b28339..a7ff03711f 100644 --- a/SignalServiceKit/src/Util/RemoteConfigManager.swift +++ b/SignalServiceKit/src/Util/RemoteConfigManager.swift @@ -189,6 +189,16 @@ public class RemoteConfig: BaseFlags { interval(.messageSendLogEntryLifetime, defaultInterval: 2 * kWeekInterval) } + @objc + public static var donorBadgeDisplay: Bool { + DebugFlags.forceDonorBadgeDisplay || isEnabled(.donorBadgeDisplay) + } + + @objc + public static var donorBadgeAcquisition: Bool { + DebugFlags.forceDonorBadgeAcquisition || isEnabled(.donorBadgeAcquisition) + } + // MARK: - private static func interval( @@ -376,6 +386,8 @@ private struct Flags { case viewedReceiptSending case senderKeyKillSwitch case messageResendKillSwitch + case donorBadgeDisplay + case donorBadgeAcquisition } // Values defined in this array remain set once they are diff --git a/SignalUI/Views/ConversationAvatarView.swift b/SignalUI/Views/ConversationAvatarView.swift index a651422f13..6c41a89bbd 100644 --- a/SignalUI/Views/ConversationAvatarView.swift +++ b/SignalUI/Views/ConversationAvatarView.swift @@ -528,7 +528,7 @@ public enum ConversationAvatarDataSource: Equatable, Dependencies, CustomStringC // TODO: Badges — Should this be async? fileprivate func fetchBadge(configuration: ConversationAvatarView.Configuration, transaction: SDSAnyReadTransaction?) -> UIImage? { guard configuration.addBadgeIfApplicable else { return nil } - guard FeatureFlags.fetchAndDisplayBadges else { + guard RemoteConfig.donorBadgeDisplay else { Logger.warn("Ignoring badge request. Badge flag currently disabled") return nil }