perf: Optimize error alert handling.

This commit is contained in:
小弟调调 2025-12-29 20:20:02 +08:00
parent 99ab4f7338
commit 7f2a1db892
4 changed files with 15 additions and 31 deletions

View file

@ -27,17 +27,12 @@ struct RestorePurchasesButton: View {
Button(action: {
Task {
restoringPurchase = true
do {
try await store.restorePurchases()
restoringPurchase = false
if store.purchasedProductIDs.count > 0 {
popupDismissHandle?()
} else if showError(error: store.storeError) == true {
NotifyAlert.alert(title: store.storeError?.description(locale: locale) ?? noPurchaseTitle, message: "")
}
} catch {
restoringPurchase = false
NotifyAlert.alert(title: restoreFailedTitle, message: error.localizedDescription)
await store.restorePurchases()
restoringPurchase = false
if store.purchasedProductIDs.count > 0 {
popupDismissHandle?()
} else if showError(error: store.storeError) == true {
NotifyAlert.alert(title: store.storeError?.description(locale: locale) ?? noPurchaseTitle, message: "")
}
}
}, label: {

View file

@ -110,8 +110,7 @@ public final class StoreContext: ObservableObject {
do {
// App Store
let result = try await AppStore.sync()
print("AppStore.sync:", result)
try await AppStore.sync()
//
await updatePurchasedProducts()

View file

@ -110,15 +110,10 @@ public struct StoreKitHelperSelectionView: View {
let purchaseFailed = String.localizedString(key: "purchase_failed", locale: locale)
Task {
buyingProductID = product.id
do {
try await store.purchase(product)
buyingProductID = nil
if store.isPurchased(product.id) == true {
popupDismissHandle?()
}
} catch {
buyingProductID = nil
NotifyAlert.alert(title: purchaseFailed, message: error.localizedDescription)
await store.purchase(product)
buyingProductID = nil
if store.isPurchased(product.id) == true {
popupDismissHandle?()
}
}
}

View file

@ -84,15 +84,10 @@ struct ProductsLoadList: View {
let purchaseFailed = String.localizedString(key: "purchase_failed", locale: locale)
Task {
buyingProductID = product.id
do {
try await store.purchase(product)
buyingProductID = nil
if store.isPurchased(product.id) == true {
popupDismissHandle?()
}
} catch {
buyingProductID = nil
NotifyAlert.alert(title: purchaseFailed, message: error.localizedDescription)
await store.purchase(product)
buyingProductID = nil
if store.isPurchased(product.id) == true {
popupDismissHandle?()
}
}
}