Files
purchases-ios/RevenueCatUI/Views/PackageButtonStyle.swift
T
NachoSotoandAndy Boedo af08736775 RevenueCatUI: added support to other deployment targets (#3392)
Follow up to #3378.

This allows us to link both `RevenueCat` and `RevenueCatUI` from
`PurchasesHybridCommon` supporting the same platforms.
The actual types might not be available in some platforms / versions,
but we can detect that at compile time.

See
https://app.circleci.com/pipelines/github/RevenueCat/purchases-hybrid-common/2564/workflows/ea6a4e24-e1eb-4c7a-a930-173945732999/jobs/10352

---------

Co-authored-by: Andy Boedo <andresboedo@gmail.com>
2023-11-08 07:35:19 -08:00

40 lines
1.1 KiB
Swift

//
// Copyright RevenueCat Inc. All Rights Reserved.
//
// Licensed under the MIT License (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://opensource.org/licenses/MIT
//
// PackageButtonStyle.swift
//
// Created by Nacho Soto on 7/29/23.
import SwiftUI
/// A `ButtonStyle` suitable to be used for a package selection button.
/// Features:
/// - Automatic handling of disabled state
/// - Replaces itself with a loading indicator if it's the selected package.
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *)
struct PackageButtonStyle: ButtonStyle {
var fadeDuringPurchases: Bool = true
@EnvironmentObject
private var purchaseHandler: PurchaseHandler
func makeBody(configuration: ButtonStyleConfiguration) -> some View {
configuration
.label
.contentShape(Rectangle())
.opacity(
self.fadeDuringPurchases && self.purchaseHandler.actionInProgress
? Constants.purchaseInProgressButtonOpacity
: 1
)
}
}