diff --git a/damus/Models/Purple/DamusPurple.swift b/damus/Models/Purple/DamusPurple.swift index b03550a3..19b92679 100644 --- a/damus/Models/Purple/DamusPurple.swift +++ b/damus/Models/Purple/DamusPurple.swift @@ -31,6 +31,12 @@ class DamusPurple: StoreObserverDelegate { // TODO: On release, we could just replace this with `true` (or some other feature flag) return self.settings.enable_experimental_purple_api } + + // Whether to enable Apple In-app purchase support + var enable_purple_iap_support: Bool { + // TODO: When we have full support for Apple In-app purchases, we can replace this with `true` (or another feature flag) + return self.settings.enable_experimental_purple_iap_support + } func profile_purple_badge_info(pubkey: Pubkey) async -> UserBadgeInfo? { if let cached_result = self.starred_profiles_cache[pubkey] { diff --git a/damus/Models/UserSettingsStore.swift b/damus/Models/UserSettingsStore.swift index 8d251fa6..503f60c2 100644 --- a/damus/Models/UserSettingsStore.swift +++ b/damus/Models/UserSettingsStore.swift @@ -208,6 +208,9 @@ class UserSettingsStore: ObservableObject { @StringSetting(key: "purple_environment", default_value: .production) var purple_enviroment: DamusPurpleEnvironment + @Setting(key: "enable_experimental_purple_iap_support", default_value: false) + var enable_experimental_purple_iap_support: Bool + @Setting(key: "emoji_reactions", default_value: default_emoji_reactions) var emoji_reactions: [String] diff --git a/damus/Views/Purple/DamusPurpleView.swift b/damus/Views/Purple/DamusPurpleView.swift index a1e60532..a4ba4727 100644 --- a/damus/Views/Purple/DamusPurpleView.swift +++ b/damus/Views/Purple/DamusPurpleView.swift @@ -362,18 +362,20 @@ struct DamusPurpleView: View { var ProductStateView: some View { Group { - switch self.products { - case .failed: - ProductLoadError - case .loaded(let products): - if let purchased { - PurchasedView(purchased) - } else { - ProductsView(products) - } - case .loading: - ProgressView() - .progressViewStyle(.circular) + if damus_state.purple.enable_purple_iap_support { + switch self.products { + case .failed: + ProductLoadError + case .loaded(let products): + if let purchased { + PurchasedView(purchased) + } else { + ProductsView(products) + } + case .loading: + ProgressView() + .progressViewStyle(.circular) + } } } } @@ -457,8 +459,11 @@ struct DamusPurpleView: View { HStack { Spacer() Link( - NSLocalizedString("Learn more", comment: "Label for a link to the Damus Purple landing page"), - destination: damus_state.purple.environment.purple_landing_page_url() + damus_state.purple.enable_purple_iap_support ? + NSLocalizedString("Learn more about the features", comment: "Label for a link to the Damus website, to allow the user to learn more about the features of Purple") + : + NSLocalizedString("Coming soon! Visit our website to learn more", comment: "Label announcing Purple, and inviting the user to learn more on the website"), + destination: damus_state.purple.environment.damus_website_url() ) .foregroundColor(DamusColors.pink) .padding() diff --git a/damus/Views/Settings/DeveloperSettingsView.swift b/damus/Views/Settings/DeveloperSettingsView.swift index 72016a5b..839c2f2b 100644 --- a/damus/Views/Settings/DeveloperSettingsView.swift +++ b/damus/Views/Settings/DeveloperSettingsView.swift @@ -34,6 +34,9 @@ struct DeveloperSettingsView: View { .tag(purple_environment.rawValue) } } + + Toggle("Enable experimental Purple In-app purchase support", isOn: $settings.enable_experimental_purple_iap_support) + .toggleStyle(.switch) } } }