@@ -30,18 +30,18 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
3030 instance. qonversionSandwich = sandwichInstance
3131 }
3232
33- public func handle( _ call: FlutterMethodCall , result: @escaping FlutterResult ) {
33+ @ MainActor public func handle( _ call: FlutterMethodCall , result: @escaping FlutterResult ) {
3434
3535 // MARK: - Calls without arguments
3636
3737 switch ( call. method) {
3838 case " syncHistoricalData " :
39- qonversionSandwich? . syncHistoricalData ( )
40- return result ( nil )
39+ qonversionSandwich? . syncHistoricalData ( )
40+ return result ( nil )
4141
4242 case " syncStoreKit2Purchases " :
43- qonversionSandwich? . syncStoreKit2Purchases ( )
44- return result ( nil )
43+ qonversionSandwich? . syncStoreKit2Purchases ( )
44+ return result ( nil )
4545
4646 case " products " :
4747 return products ( result)
@@ -62,19 +62,22 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
6262 case " logout " :
6363 qonversionSandwich? . logout ( )
6464 return result ( nil )
65-
66- case " isFallbackFileAccessible " :
67- return isFallbackFileAccessible ( result)
6865
6966 case " userInfo " :
7067 return userInfo ( result)
7168
7269 case " userProperties " :
7370 return userProperties ( result)
7471
72+ case " isFallbackFileAccessible " :
73+ return isFallbackFileAccessible ( result)
74+
7575 case " remoteConfigList " :
7676 return remoteConfigList ( result)
7777
78+ case " collectAppleSearchAdsAttribution " :
79+ return collectAppleSearchAdsAttribution ( result)
80+
7881 default :
7982 break
8083 }
@@ -95,6 +98,9 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
9598 case " purchase " :
9699 return purchase ( args, result)
97100
101+ case " purchaseWithResult " :
102+ return purchaseWithResult ( args, result)
103+
98104 case " remoteConfig " :
99105 return remoteConfig ( args [ " contextKey " ] as? String , result)
100106
@@ -118,10 +124,10 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
118124
119125 case " identify " :
120126 return identify ( args [ " userId " ] as? String , result)
121-
127+
122128 case " attachUserToExperiment " :
123129 return attachUserToExperiment ( args, result)
124-
130+
125131 case " detachUserFromExperiment " :
126132 return detachUserFromExperiment ( args, result)
127133
@@ -171,7 +177,7 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
171177 return result ( FlutterError . noNecessaryData)
172178 }
173179
174- qonversionSandwich? . getPromotionalOffer ( productId, productDiscountId: discountId, completion: getDefaultCompletion ( result) )
180+ qonversionSandwich? . getPromotionalOffer ( productId, productDiscountId: discountId, completion: getJsonCompletion ( result) )
175181 }
176182
177183 private func products( _ result: @escaping FlutterResult ) {
@@ -190,6 +196,18 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
190196 qonversionSandwich? . purchase ( productId, quantity: quantity, contextKeys: contextKeys, promoOffer: promoOfferData, completion: getJsonCompletion ( result) )
191197 }
192198
199+ private func purchaseWithResult( _ args: [ String : Any ] , _ result: @escaping FlutterResult ) {
200+ guard let productId = args [ " productId " ] as? String else {
201+ return result ( FlutterError . noNecessaryData)
202+ }
203+
204+ let contextKeys = args [ " contextKeys " ] as? [ String ] ?? [ ]
205+ let quantity = args [ " quantity " ] as? Int ?? 1
206+ let promoOfferData = args [ " promoOffer " ] as? [ String : Any ] ?? [ : ]
207+
208+ qonversionSandwich? . purchaseWithResult ( productId, quantity: quantity, contextKeys: contextKeys, promoOffer: promoOfferData, completion: getJsonCompletion ( result) )
209+ }
210+
193211 private func checkEntitlements( _ result: @escaping FlutterResult ) {
194212 qonversionSandwich? . checkEntitlements ( getJsonCompletion ( result) )
195213 }
@@ -206,6 +224,11 @@ public class SwiftQonversionPlugin: NSObject, FlutterPlugin {
206224 qonversionSandwich? . isFallbackFileAccessible ( completion: getJsonCompletion ( result) )
207225 }
208226
227+ private func collectAppleSearchAdsAttribution( _ result: @escaping FlutterResult ) {
228+ qonversionSandwich? . collectAppleSearchAdsAttribution ( )
229+ result ( nil )
230+ }
231+
209232 private func remoteConfigList( _ args: [ String : Any ] , _ result: @escaping FlutterResult ) {
210233 guard let contextKeys = args [ " contextKeys " ] as? [ String ] else {
211234 return result ( FlutterError . noNecessaryData)
0 commit comments