Skip to content

Commit e4d4bfe

Browse files
committed
refactor(ios): removeListener helper
1 parent 068c1e5 commit e4d4bfe

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

ios/ExpoIapModule.swift

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,12 @@ public class ExpoIapModule: Module {
2626
private var purchaseUpdatedSub: Subscription?
2727
private var purchaseErrorSub: Subscription?
2828
private var promotedProductSub: Subscription?
29+
30+
// Helper to safely remove a listener and nil out the reference
31+
private func removeListener(_ sub: inout Subscription?) {
32+
if let s = sub { OpenIapModule.shared.removeListener(s) }
33+
sub = nil
34+
}
2935

3036
nonisolated public func definition() -> ModuleDefinition {
3137
Name("ExpoIap")
@@ -407,10 +413,12 @@ public class ExpoIapModule: Module {
407413
Task { @MainActor in
408414
guard let self else { return }
409415
logDebug("❌ Purchase error callback - sending error event")
416+
// Use OpenIapPurchaseError alias for clarity/parity
417+
let err: OpenIapPurchaseError = error
410418
let errorData: [String: Any?] = [
411-
"code": error.code,
412-
"message": error.message,
413-
"productId": error.productId
419+
"code": err.code,
420+
"message": err.message,
421+
"productId": err.productId,
414422
]
415423
self.sendEvent(OpenIapEvent.PurchaseError, errorData)
416424
}
@@ -428,12 +436,9 @@ public class ExpoIapModule: Module {
428436
@MainActor
429437
private func cleanupStore() async {
430438
logDebug("Cleaning up listeners and ending connection")
431-
if let sub = purchaseUpdatedSub { OpenIapModule.shared.removeListener(sub) }
432-
if let sub = purchaseErrorSub { OpenIapModule.shared.removeListener(sub) }
433-
if let sub = promotedProductSub { OpenIapModule.shared.removeListener(sub) }
434-
purchaseUpdatedSub = nil
435-
purchaseErrorSub = nil
436-
promotedProductSub = nil
439+
removeListener(&purchaseUpdatedSub)
440+
removeListener(&purchaseErrorSub)
441+
removeListener(&promotedProductSub)
437442
_ = try? await OpenIapModule.shared.endConnection()
438443
}
439444

0 commit comments

Comments
 (0)