mirror of
https://github.com/kiwix/kiwix-apple.git
synced 2025-09-08 20:01:15 -04:00
Fix slow side menu, by using low priority on checking apple pay status
This commit is contained in:
parent
be5bbb50ec
commit
58cc120315
@ -169,6 +169,7 @@ struct RootView: View {
|
|||||||
@StateObject private var navigation = NavigationViewModel()
|
@StateObject private var navigation = NavigationViewModel()
|
||||||
@State private var currentNavItem: NavigationItem?
|
@State private var currentNavItem: NavigationItem?
|
||||||
@StateObject private var windowTracker = WindowTracker()
|
@StateObject private var windowTracker = WindowTracker()
|
||||||
|
@State private var paymentButtonLabel: PayWithApplePayButtonLabel?
|
||||||
|
|
||||||
private let primaryItems: [NavigationItem] = [.bookmarks]
|
private let primaryItems: [NavigationItem] = [.bookmarks]
|
||||||
private let libraryItems: [NavigationItem] = [.opened, .categories, .downloads, .new]
|
private let libraryItems: [NavigationItem] = [.opened, .categories, .downloads, .new]
|
||||||
@ -197,7 +198,7 @@ struct RootView: View {
|
|||||||
}
|
}
|
||||||
.frame(minWidth: 160)
|
.frame(minWidth: 160)
|
||||||
.safeAreaInset(edge: .bottom) {
|
.safeAreaInset(edge: .bottom) {
|
||||||
if Payment.paymentButtonType() != nil && Brand.hideDonation != true {
|
if paymentButtonLabel != nil && Brand.hideDonation != true {
|
||||||
SupportKiwixButton {
|
SupportKiwixButton {
|
||||||
openWindow(id: "donation")
|
openWindow(id: "donation")
|
||||||
}
|
}
|
||||||
@ -316,6 +317,11 @@ struct RootView: View {
|
|||||||
ZimMigration.forCustomApps()
|
ZimMigration.forCustomApps()
|
||||||
currentNavItem = .tab(objectID: navigation.currentTabId)
|
currentNavItem = .tab(objectID: navigation.currentTabId)
|
||||||
}
|
}
|
||||||
|
// MARK: - payment button init
|
||||||
|
if Brand.hideDonation == false {
|
||||||
|
paymentButtonLabel = await Payment.paymentButtonTypeAsync()
|
||||||
|
}
|
||||||
|
|
||||||
// MARK: - migrations
|
// MARK: - migrations
|
||||||
if !ProcessInfo.processInfo.arguments.contains("testing") {
|
if !ProcessInfo.processInfo.arguments.contains("testing") {
|
||||||
_ = MigrationService().migrateAll()
|
_ = MigrationService().migrateAll()
|
||||||
|
@ -118,8 +118,8 @@ struct Payment {
|
|||||||
.init(value: 10)
|
.init(value: 10)
|
||||||
]
|
]
|
||||||
|
|
||||||
/// Checks Apple Pay capabilities, and returns the button label accrodingly
|
/// Checks Apple Pay capabilities, and returns the button label accordingly
|
||||||
/// Setup button if no cards added yet,
|
/// - Returns: Setup button if no cards added yet,
|
||||||
/// nil if Apple Pay is not supported
|
/// nil if Apple Pay is not supported
|
||||||
/// or donation button, if all is OK
|
/// or donation button, if all is OK
|
||||||
static func paymentButtonType() -> PayWithApplePayButtonLabel? {
|
static func paymentButtonType() -> PayWithApplePayButtonLabel? {
|
||||||
@ -136,6 +136,20 @@ struct Payment {
|
|||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Async version of ``paymentButtonType()`` with low priority
|
||||||
|
/// - Returns: Setup button if no cards added yet,
|
||||||
|
/// nil if Apple Pay is not supported
|
||||||
|
/// or donation button, if all is OK
|
||||||
|
static func paymentButtonTypeAsync() async -> PayWithApplePayButtonLabel? {
|
||||||
|
let task = Task<PayWithApplePayButtonLabel?, Never>(priority: .low) {
|
||||||
|
Self.paymentButtonType()
|
||||||
|
}
|
||||||
|
guard let buttonLabel = await task.result.get() else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return buttonLabel
|
||||||
|
}
|
||||||
|
|
||||||
func donationRequest(for selectedAmount: SelectedAmount) -> PKPaymentRequest {
|
func donationRequest(for selectedAmount: SelectedAmount) -> PKPaymentRequest {
|
||||||
let request = PKPaymentRequest()
|
let request = PKPaymentRequest()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user