// // Copyright 2022 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only // /// Payment methods that a user could pay with. /// /// May be confused with ``Stripe.PaymentMethod``, which represents a payment /// method that's ready to submit to Stripe. /// /// - Note /// The raw value of this type is used for on-disk persistence, for historical /// compatibility. However, a different format is used when parsing payment /// methods from the service. public enum DonationPaymentMethod: String { case applePay case creditOrDebitCard case paypal case sepa case ideal /// Parse a payment method from a string provided by the service. /// /// - Note /// Payments made using Apple Pay are returned as "card payments" by the /// service. public init?(serverRawValue: String) { switch serverRawValue { case "CARD": self = .creditOrDebitCard case "PAYPAL": self = .paypal case "SEPA_DEBIT": self = .sepa case "IDEAL": self = .ideal default: return nil } } }