mirror of
https://github.com/RevenueCat/purchases-ios
synced 2026-11-11 22:55:55 +05:45
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>
40 lines
1.1 KiB
Swift
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
|
|
)
|
|
}
|
|
|
|
}
|