Skip to content

Commit 10f6f3a

Browse files
committed
add more specific errors
for handling failing purchases
1 parent bf1106f commit 10f6f3a

File tree

9 files changed

+500
-10
lines changed

9 files changed

+500
-10
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## Unreleased
99

10+
## [0.5.2] - 2024-01-11
11+
12+
### Added
13+
* add `IosIapPurchaseError` and `IosIapStoreKitError` to `IosIapPurchaseResponse` to provide programmatic error handling
14+
1015
## [0.5.1] - 2024-12-02
1116

1217
### Changed

RustXcframework.xcframework/ios-arm64/Headers/bevy_ios_iap.h

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,30 @@ void* __swift_bridge__$Vec_IosIapTransaction$get_mut(void* vec_ptr, uintptr_t in
169169
uintptr_t __swift_bridge__$Vec_IosIapTransaction$len(void* vec_ptr);
170170
void* __swift_bridge__$Vec_IosIapTransaction$as_ptr(void* vec_ptr);
171171

172+
typedef struct IosIapStoreKitError IosIapStoreKitError;
173+
void __swift_bridge__$IosIapStoreKitError$_free(void* self);
174+
175+
void* __swift_bridge__$Vec_IosIapStoreKitError$new(void);
176+
void __swift_bridge__$Vec_IosIapStoreKitError$drop(void* vec_ptr);
177+
void __swift_bridge__$Vec_IosIapStoreKitError$push(void* vec_ptr, void* item_ptr);
178+
void* __swift_bridge__$Vec_IosIapStoreKitError$pop(void* vec_ptr);
179+
void* __swift_bridge__$Vec_IosIapStoreKitError$get(void* vec_ptr, uintptr_t index);
180+
void* __swift_bridge__$Vec_IosIapStoreKitError$get_mut(void* vec_ptr, uintptr_t index);
181+
uintptr_t __swift_bridge__$Vec_IosIapStoreKitError$len(void* vec_ptr);
182+
void* __swift_bridge__$Vec_IosIapStoreKitError$as_ptr(void* vec_ptr);
183+
184+
typedef struct IosIapPurchaseError IosIapPurchaseError;
185+
void __swift_bridge__$IosIapPurchaseError$_free(void* self);
186+
187+
void* __swift_bridge__$Vec_IosIapPurchaseError$new(void);
188+
void __swift_bridge__$Vec_IosIapPurchaseError$drop(void* vec_ptr);
189+
void __swift_bridge__$Vec_IosIapPurchaseError$push(void* vec_ptr, void* item_ptr);
190+
void* __swift_bridge__$Vec_IosIapPurchaseError$pop(void* vec_ptr);
191+
void* __swift_bridge__$Vec_IosIapPurchaseError$get(void* vec_ptr, uintptr_t index);
192+
void* __swift_bridge__$Vec_IosIapPurchaseError$get_mut(void* vec_ptr, uintptr_t index);
193+
uintptr_t __swift_bridge__$Vec_IosIapPurchaseError$len(void* vec_ptr);
194+
void* __swift_bridge__$Vec_IosIapPurchaseError$as_ptr(void* vec_ptr);
195+
172196
typedef struct IosIapPurchaseResponse IosIapPurchaseResponse;
173197
void __swift_bridge__$IosIapPurchaseResponse$_free(void* self);
174198

@@ -215,6 +239,22 @@ void* __swift_bridge__$IosIapPurchaseResponse$canceled(void* id);
215239
void* __swift_bridge__$IosIapPurchaseResponse$pending(void* id);
216240
void* __swift_bridge__$IosIapPurchaseResponse$unknown(void* id);
217241
void* __swift_bridge__$IosIapPurchaseResponse$error(void* e);
242+
void* __swift_bridge__$IosIapPurchaseResponse$purchase_error(void* error, void* localized_description);
243+
void* __swift_bridge__$IosIapPurchaseResponse$storekit_error(void* error, void* localized_description);
244+
void* __swift_bridge__$IosIapPurchaseError$invalid_quantity(void);
245+
void* __swift_bridge__$IosIapPurchaseError$product_unavailable(void);
246+
void* __swift_bridge__$IosIapPurchaseError$purchase_not_allowed(void);
247+
void* __swift_bridge__$IosIapPurchaseError$ineligible_for_offer(void);
248+
void* __swift_bridge__$IosIapPurchaseError$invalid_offer_identifier(void);
249+
void* __swift_bridge__$IosIapPurchaseError$invalid_offer_price(void);
250+
void* __swift_bridge__$IosIapPurchaseError$invalid_offer_signature(void);
251+
void* __swift_bridge__$IosIapPurchaseError$missing_offer_parameters(void);
252+
void* __swift_bridge__$IosIapStoreKitError$unknown(void);
253+
void* __swift_bridge__$IosIapStoreKitError$user_cancelled(void);
254+
void* __swift_bridge__$IosIapStoreKitError$network_error(void* e);
255+
void* __swift_bridge__$IosIapStoreKitError$system_error(void* e);
256+
void* __swift_bridge__$IosIapStoreKitError$not_available_in_storefront(void);
257+
void* __swift_bridge__$IosIapStoreKitError$not_entitled(void);
218258
void* __swift_bridge__$IosIapEnvironment$sandbox(void);
219259
void* __swift_bridge__$IosIapEnvironment$production(void);
220260
void* __swift_bridge__$IosIapEnvironment$xcode(void);

RustXcframework.xcframework/ios-arm64_x86_64-simulator/Headers/bevy_ios_iap.h

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,30 @@ void* __swift_bridge__$Vec_IosIapTransaction$get_mut(void* vec_ptr, uintptr_t in
169169
uintptr_t __swift_bridge__$Vec_IosIapTransaction$len(void* vec_ptr);
170170
void* __swift_bridge__$Vec_IosIapTransaction$as_ptr(void* vec_ptr);
171171

172+
typedef struct IosIapStoreKitError IosIapStoreKitError;
173+
void __swift_bridge__$IosIapStoreKitError$_free(void* self);
174+
175+
void* __swift_bridge__$Vec_IosIapStoreKitError$new(void);
176+
void __swift_bridge__$Vec_IosIapStoreKitError$drop(void* vec_ptr);
177+
void __swift_bridge__$Vec_IosIapStoreKitError$push(void* vec_ptr, void* item_ptr);
178+
void* __swift_bridge__$Vec_IosIapStoreKitError$pop(void* vec_ptr);
179+
void* __swift_bridge__$Vec_IosIapStoreKitError$get(void* vec_ptr, uintptr_t index);
180+
void* __swift_bridge__$Vec_IosIapStoreKitError$get_mut(void* vec_ptr, uintptr_t index);
181+
uintptr_t __swift_bridge__$Vec_IosIapStoreKitError$len(void* vec_ptr);
182+
void* __swift_bridge__$Vec_IosIapStoreKitError$as_ptr(void* vec_ptr);
183+
184+
typedef struct IosIapPurchaseError IosIapPurchaseError;
185+
void __swift_bridge__$IosIapPurchaseError$_free(void* self);
186+
187+
void* __swift_bridge__$Vec_IosIapPurchaseError$new(void);
188+
void __swift_bridge__$Vec_IosIapPurchaseError$drop(void* vec_ptr);
189+
void __swift_bridge__$Vec_IosIapPurchaseError$push(void* vec_ptr, void* item_ptr);
190+
void* __swift_bridge__$Vec_IosIapPurchaseError$pop(void* vec_ptr);
191+
void* __swift_bridge__$Vec_IosIapPurchaseError$get(void* vec_ptr, uintptr_t index);
192+
void* __swift_bridge__$Vec_IosIapPurchaseError$get_mut(void* vec_ptr, uintptr_t index);
193+
uintptr_t __swift_bridge__$Vec_IosIapPurchaseError$len(void* vec_ptr);
194+
void* __swift_bridge__$Vec_IosIapPurchaseError$as_ptr(void* vec_ptr);
195+
172196
typedef struct IosIapPurchaseResponse IosIapPurchaseResponse;
173197
void __swift_bridge__$IosIapPurchaseResponse$_free(void* self);
174198

@@ -215,6 +239,22 @@ void* __swift_bridge__$IosIapPurchaseResponse$canceled(void* id);
215239
void* __swift_bridge__$IosIapPurchaseResponse$pending(void* id);
216240
void* __swift_bridge__$IosIapPurchaseResponse$unknown(void* id);
217241
void* __swift_bridge__$IosIapPurchaseResponse$error(void* e);
242+
void* __swift_bridge__$IosIapPurchaseResponse$purchase_error(void* error, void* localized_description);
243+
void* __swift_bridge__$IosIapPurchaseResponse$storekit_error(void* error, void* localized_description);
244+
void* __swift_bridge__$IosIapPurchaseError$invalid_quantity(void);
245+
void* __swift_bridge__$IosIapPurchaseError$product_unavailable(void);
246+
void* __swift_bridge__$IosIapPurchaseError$purchase_not_allowed(void);
247+
void* __swift_bridge__$IosIapPurchaseError$ineligible_for_offer(void);
248+
void* __swift_bridge__$IosIapPurchaseError$invalid_offer_identifier(void);
249+
void* __swift_bridge__$IosIapPurchaseError$invalid_offer_price(void);
250+
void* __swift_bridge__$IosIapPurchaseError$invalid_offer_signature(void);
251+
void* __swift_bridge__$IosIapPurchaseError$missing_offer_parameters(void);
252+
void* __swift_bridge__$IosIapStoreKitError$unknown(void);
253+
void* __swift_bridge__$IosIapStoreKitError$user_cancelled(void);
254+
void* __swift_bridge__$IosIapStoreKitError$network_error(void* e);
255+
void* __swift_bridge__$IosIapStoreKitError$system_error(void* e);
256+
void* __swift_bridge__$IosIapStoreKitError$not_available_in_storefront(void);
257+
void* __swift_bridge__$IosIapStoreKitError$not_entitled(void);
218258
void* __swift_bridge__$IosIapEnvironment$sandbox(void);
219259
void* __swift_bridge__$IosIapEnvironment$production(void);
220260
void* __swift_bridge__$IosIapEnvironment$xcode(void);

Sources/bevy_ios_iap/BevyIosIAP.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ public func ios_iap_purchase(request:Int64, id: RustString) {
5454
}
5555

5656
purchase_processed(request, result)
57+
} catch let error as Product.PurchaseError {
58+
purchase_processed(request, IosIapPurchaseResponse.purchase_error(convert_purchase_error(error),error.localizedDescription))
59+
} catch let error as StoreKitError {
60+
purchase_processed(request, IosIapPurchaseResponse.storekit_error(convert_storekit_error(error),error.localizedDescription))
5761
} catch {
5862
purchase_processed(request, IosIapPurchaseResponse.error(error.localizedDescription))
5963
}
@@ -189,6 +193,30 @@ func convert_product(_ product: (Product)) async throws -> IosIapProduct {
189193
return rust_product
190194
}
191195

196+
public func convert_purchase_error(_ error: (Product.PurchaseError)) -> IosIapPurchaseError {
197+
return switch error {
198+
case .invalidQuantity: IosIapPurchaseError.invalid_quantity()
199+
case .productUnavailable: IosIapPurchaseError.product_unavailable()
200+
case .purchaseNotAllowed: IosIapPurchaseError.purchase_not_allowed()
201+
case .ineligibleForOffer: IosIapPurchaseError.ineligible_for_offer()
202+
case .invalidOfferIdentifier: IosIapPurchaseError.invalid_offer_identifier()
203+
case .invalidOfferPrice: IosIapPurchaseError.invalid_offer_price()
204+
case .invalidOfferSignature: IosIapPurchaseError.invalid_offer_signature()
205+
case .missingOfferParameters: IosIapPurchaseError.missing_offer_parameters()
206+
}
207+
}
208+
209+
public func convert_storekit_error(_ error: (StoreKitError)) -> IosIapStoreKitError {
210+
return switch error {
211+
case .unknown: IosIapStoreKitError.unknown()
212+
case .userCancelled: IosIapStoreKitError.user_cancelled()
213+
case .networkError(let e): IosIapStoreKitError.network_error(e.localizedDescription)
214+
case .systemError(let e): IosIapStoreKitError.system_error(e.localizedDescription)
215+
case .notAvailableInStorefront: IosIapStoreKitError.not_available_in_storefront()
216+
case .notEntitled: IosIapStoreKitError.not_entitled()
217+
}
218+
}
219+
192220
public func convert_transaction(_ transaction: (Transaction)) throws -> IosIapTransaction {
193221
let type = if transaction.productType == Product.ProductType.consumable {
194222
IosIapProductType.new_consumable(false)

Sources/bevy_ios_iap/bevy_ios_iap.swift

Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1260,6 +1260,215 @@ extension IosIapTransaction: Vectorizable {
12601260
}
12611261

12621262

1263+
public class IosIapStoreKitError: IosIapStoreKitErrorRefMut {
1264+
var isOwned: Bool = true
1265+
1266+
public override init(ptr: UnsafeMutableRawPointer) {
1267+
super.init(ptr: ptr)
1268+
}
1269+
1270+
deinit {
1271+
if isOwned {
1272+
__swift_bridge__$IosIapStoreKitError$_free(ptr)
1273+
}
1274+
}
1275+
}
1276+
extension IosIapStoreKitError {
1277+
class public func network_error<GenericIntoRustString: IntoRustString>(_ e: GenericIntoRustString) -> IosIapStoreKitError {
1278+
IosIapStoreKitError(ptr: __swift_bridge__$IosIapStoreKitError$network_error({ let rustString = e.intoRustString(); rustString.isOwned = false; return rustString.ptr }()))
1279+
}
1280+
1281+
class public func system_error<GenericIntoRustString: IntoRustString>(_ e: GenericIntoRustString) -> IosIapStoreKitError {
1282+
IosIapStoreKitError(ptr: __swift_bridge__$IosIapStoreKitError$system_error({ let rustString = e.intoRustString(); rustString.isOwned = false; return rustString.ptr }()))
1283+
}
1284+
}
1285+
public class IosIapStoreKitErrorRefMut: IosIapStoreKitErrorRef {
1286+
public override init(ptr: UnsafeMutableRawPointer) {
1287+
super.init(ptr: ptr)
1288+
}
1289+
}
1290+
public class IosIapStoreKitErrorRef {
1291+
var ptr: UnsafeMutableRawPointer
1292+
1293+
public init(ptr: UnsafeMutableRawPointer) {
1294+
self.ptr = ptr
1295+
}
1296+
}
1297+
extension IosIapStoreKitErrorRef {
1298+
class public func unknown() -> IosIapStoreKitError {
1299+
IosIapStoreKitError(ptr: __swift_bridge__$IosIapStoreKitError$unknown())
1300+
}
1301+
1302+
class public func user_cancelled() -> IosIapStoreKitError {
1303+
IosIapStoreKitError(ptr: __swift_bridge__$IosIapStoreKitError$user_cancelled())
1304+
}
1305+
1306+
class public func not_available_in_storefront() -> IosIapStoreKitError {
1307+
IosIapStoreKitError(ptr: __swift_bridge__$IosIapStoreKitError$not_available_in_storefront())
1308+
}
1309+
1310+
class public func not_entitled() -> IosIapStoreKitError {
1311+
IosIapStoreKitError(ptr: __swift_bridge__$IosIapStoreKitError$not_entitled())
1312+
}
1313+
}
1314+
extension IosIapStoreKitError: Vectorizable {
1315+
public static func vecOfSelfNew() -> UnsafeMutableRawPointer {
1316+
__swift_bridge__$Vec_IosIapStoreKitError$new()
1317+
}
1318+
1319+
public static func vecOfSelfFree(vecPtr: UnsafeMutableRawPointer) {
1320+
__swift_bridge__$Vec_IosIapStoreKitError$drop(vecPtr)
1321+
}
1322+
1323+
public static func vecOfSelfPush(vecPtr: UnsafeMutableRawPointer, value: IosIapStoreKitError) {
1324+
__swift_bridge__$Vec_IosIapStoreKitError$push(vecPtr, {value.isOwned = false; return value.ptr;}())
1325+
}
1326+
1327+
public static func vecOfSelfPop(vecPtr: UnsafeMutableRawPointer) -> Optional<Self> {
1328+
let pointer = __swift_bridge__$Vec_IosIapStoreKitError$pop(vecPtr)
1329+
if pointer == nil {
1330+
return nil
1331+
} else {
1332+
return (IosIapStoreKitError(ptr: pointer!) as! Self)
1333+
}
1334+
}
1335+
1336+
public static func vecOfSelfGet(vecPtr: UnsafeMutableRawPointer, index: UInt) -> Optional<IosIapStoreKitErrorRef> {
1337+
let pointer = __swift_bridge__$Vec_IosIapStoreKitError$get(vecPtr, index)
1338+
if pointer == nil {
1339+
return nil
1340+
} else {
1341+
return IosIapStoreKitErrorRef(ptr: pointer!)
1342+
}
1343+
}
1344+
1345+
public static func vecOfSelfGetMut(vecPtr: UnsafeMutableRawPointer, index: UInt) -> Optional<IosIapStoreKitErrorRefMut> {
1346+
let pointer = __swift_bridge__$Vec_IosIapStoreKitError$get_mut(vecPtr, index)
1347+
if pointer == nil {
1348+
return nil
1349+
} else {
1350+
return IosIapStoreKitErrorRefMut(ptr: pointer!)
1351+
}
1352+
}
1353+
1354+
public static func vecOfSelfAsPtr(vecPtr: UnsafeMutableRawPointer) -> UnsafePointer<IosIapStoreKitErrorRef> {
1355+
UnsafePointer<IosIapStoreKitErrorRef>(OpaquePointer(__swift_bridge__$Vec_IosIapStoreKitError$as_ptr(vecPtr)))
1356+
}
1357+
1358+
public static func vecOfSelfLen(vecPtr: UnsafeMutableRawPointer) -> UInt {
1359+
__swift_bridge__$Vec_IosIapStoreKitError$len(vecPtr)
1360+
}
1361+
}
1362+
1363+
1364+
public class IosIapPurchaseError: IosIapPurchaseErrorRefMut {
1365+
var isOwned: Bool = true
1366+
1367+
public override init(ptr: UnsafeMutableRawPointer) {
1368+
super.init(ptr: ptr)
1369+
}
1370+
1371+
deinit {
1372+
if isOwned {
1373+
__swift_bridge__$IosIapPurchaseError$_free(ptr)
1374+
}
1375+
}
1376+
}
1377+
public class IosIapPurchaseErrorRefMut: IosIapPurchaseErrorRef {
1378+
public override init(ptr: UnsafeMutableRawPointer) {
1379+
super.init(ptr: ptr)
1380+
}
1381+
}
1382+
public class IosIapPurchaseErrorRef {
1383+
var ptr: UnsafeMutableRawPointer
1384+
1385+
public init(ptr: UnsafeMutableRawPointer) {
1386+
self.ptr = ptr
1387+
}
1388+
}
1389+
extension IosIapPurchaseErrorRef {
1390+
class public func invalid_quantity() -> IosIapPurchaseError {
1391+
IosIapPurchaseError(ptr: __swift_bridge__$IosIapPurchaseError$invalid_quantity())
1392+
}
1393+
1394+
class public func product_unavailable() -> IosIapPurchaseError {
1395+
IosIapPurchaseError(ptr: __swift_bridge__$IosIapPurchaseError$product_unavailable())
1396+
}
1397+
1398+
class public func purchase_not_allowed() -> IosIapPurchaseError {
1399+
IosIapPurchaseError(ptr: __swift_bridge__$IosIapPurchaseError$purchase_not_allowed())
1400+
}
1401+
1402+
class public func ineligible_for_offer() -> IosIapPurchaseError {
1403+
IosIapPurchaseError(ptr: __swift_bridge__$IosIapPurchaseError$ineligible_for_offer())
1404+
}
1405+
1406+
class public func invalid_offer_identifier() -> IosIapPurchaseError {
1407+
IosIapPurchaseError(ptr: __swift_bridge__$IosIapPurchaseError$invalid_offer_identifier())
1408+
}
1409+
1410+
class public func invalid_offer_price() -> IosIapPurchaseError {
1411+
IosIapPurchaseError(ptr: __swift_bridge__$IosIapPurchaseError$invalid_offer_price())
1412+
}
1413+
1414+
class public func invalid_offer_signature() -> IosIapPurchaseError {
1415+
IosIapPurchaseError(ptr: __swift_bridge__$IosIapPurchaseError$invalid_offer_signature())
1416+
}
1417+
1418+
class public func missing_offer_parameters() -> IosIapPurchaseError {
1419+
IosIapPurchaseError(ptr: __swift_bridge__$IosIapPurchaseError$missing_offer_parameters())
1420+
}
1421+
}
1422+
extension IosIapPurchaseError: Vectorizable {
1423+
public static func vecOfSelfNew() -> UnsafeMutableRawPointer {
1424+
__swift_bridge__$Vec_IosIapPurchaseError$new()
1425+
}
1426+
1427+
public static func vecOfSelfFree(vecPtr: UnsafeMutableRawPointer) {
1428+
__swift_bridge__$Vec_IosIapPurchaseError$drop(vecPtr)
1429+
}
1430+
1431+
public static func vecOfSelfPush(vecPtr: UnsafeMutableRawPointer, value: IosIapPurchaseError) {
1432+
__swift_bridge__$Vec_IosIapPurchaseError$push(vecPtr, {value.isOwned = false; return value.ptr;}())
1433+
}
1434+
1435+
public static func vecOfSelfPop(vecPtr: UnsafeMutableRawPointer) -> Optional<Self> {
1436+
let pointer = __swift_bridge__$Vec_IosIapPurchaseError$pop(vecPtr)
1437+
if pointer == nil {
1438+
return nil
1439+
} else {
1440+
return (IosIapPurchaseError(ptr: pointer!) as! Self)
1441+
}
1442+
}
1443+
1444+
public static func vecOfSelfGet(vecPtr: UnsafeMutableRawPointer, index: UInt) -> Optional<IosIapPurchaseErrorRef> {
1445+
let pointer = __swift_bridge__$Vec_IosIapPurchaseError$get(vecPtr, index)
1446+
if pointer == nil {
1447+
return nil
1448+
} else {
1449+
return IosIapPurchaseErrorRef(ptr: pointer!)
1450+
}
1451+
}
1452+
1453+
public static func vecOfSelfGetMut(vecPtr: UnsafeMutableRawPointer, index: UInt) -> Optional<IosIapPurchaseErrorRefMut> {
1454+
let pointer = __swift_bridge__$Vec_IosIapPurchaseError$get_mut(vecPtr, index)
1455+
if pointer == nil {
1456+
return nil
1457+
} else {
1458+
return IosIapPurchaseErrorRefMut(ptr: pointer!)
1459+
}
1460+
}
1461+
1462+
public static func vecOfSelfAsPtr(vecPtr: UnsafeMutableRawPointer) -> UnsafePointer<IosIapPurchaseErrorRef> {
1463+
UnsafePointer<IosIapPurchaseErrorRef>(OpaquePointer(__swift_bridge__$Vec_IosIapPurchaseError$as_ptr(vecPtr)))
1464+
}
1465+
1466+
public static func vecOfSelfLen(vecPtr: UnsafeMutableRawPointer) -> UInt {
1467+
__swift_bridge__$Vec_IosIapPurchaseError$len(vecPtr)
1468+
}
1469+
}
1470+
1471+
12631472
public class IosIapPurchaseResponse: IosIapPurchaseResponseRefMut {
12641473
var isOwned: Bool = true
12651474

@@ -1293,6 +1502,14 @@ extension IosIapPurchaseResponse {
12931502
class public func error<GenericIntoRustString: IntoRustString>(_ e: GenericIntoRustString) -> IosIapPurchaseResponse {
12941503
IosIapPurchaseResponse(ptr: __swift_bridge__$IosIapPurchaseResponse$error({ let rustString = e.intoRustString(); rustString.isOwned = false; return rustString.ptr }()))
12951504
}
1505+
1506+
class public func purchase_error<GenericIntoRustString: IntoRustString>(_ error: IosIapPurchaseError, _ localized_description: GenericIntoRustString) -> IosIapPurchaseResponse {
1507+
IosIapPurchaseResponse(ptr: __swift_bridge__$IosIapPurchaseResponse$purchase_error({error.isOwned = false; return error.ptr;}(), { let rustString = localized_description.intoRustString(); rustString.isOwned = false; return rustString.ptr }()))
1508+
}
1509+
1510+
class public func storekit_error<GenericIntoRustString: IntoRustString>(_ error: IosIapStoreKitError, _ localized_description: GenericIntoRustString) -> IosIapPurchaseResponse {
1511+
IosIapPurchaseResponse(ptr: __swift_bridge__$IosIapPurchaseResponse$storekit_error({error.isOwned = false; return error.ptr;}(), { let rustString = localized_description.intoRustString(); rustString.isOwned = false; return rustString.ptr }()))
1512+
}
12961513
}
12971514
public class IosIapPurchaseResponseRefMut: IosIapPurchaseResponseRef {
12981515
public override init(ptr: UnsafeMutableRawPointer) {

0 commit comments

Comments
 (0)