PaywallViewModel.swift 579 B

12345678910111213141516171819
  1. import SwiftUI
  2. @MainActor
  3. @Observable
  4. final class PaywallViewModel {
  5. var selectedPlan = PaywallPlan(productID: SubscriptionProductID.yearly)
  6. func selectPlan(_ plan: PaywallPlan) {
  7. selectedPlan = plan
  8. }
  9. func syncSelectedPlan(with availablePlans: [PaywallPlan]) {
  10. guard !availablePlans.isEmpty else { return }
  11. if !availablePlans.contains(selectedPlan) {
  12. let yearly = PaywallPlan(productID: SubscriptionProductID.yearly)
  13. selectedPlan = availablePlans.contains(yearly) ? yearly : availablePlans[0]
  14. }
  15. }
  16. }