@@ -5,14 +5,14 @@ import android.app.Application
55import androidx.annotation.NonNull
66import com.android.billingclient.api.Purchase
77import com.android.billingclient.api.SkuDetails
8+ import com.qonversion.android.sdk.AttributionSource
89import io.flutter.plugin.common.MethodCall
910import io.flutter.plugin.common.MethodChannel
1011import io.flutter.plugin.common.MethodChannel.MethodCallHandler
1112import io.flutter.plugin.common.MethodChannel.Result
1213import io.flutter.plugin.common.PluginRegistry.Registrar
1314
1415import com.qonversion.android.sdk.Qonversion
15- import com.qonversion.android.sdk.QonversionBillingBuilder
1616import com.qonversion.android.sdk.QonversionCallback
1717
1818/* * QonversionFlutterSdkPlugin */
@@ -35,18 +35,10 @@ class QonversionFlutterSdkPlugin internal constructor(registrar: Registrar): Met
3535 return result.noArgsError()
3636 }
3737
38- val internalUserId = args[" userID" ] as ? String ? : " "
39- val autoTrackPurchases = args[" autoTrackPurchases" ] as ? Boolean ? : true
40-
4138 when (call.method) {
4239 " launch" -> launch(args, result)
4340 " trackPurchase" -> trackPurchase(args, result)
44-
45- // TODO remove when old methods get removed on Dart side
46- " launchWithKeyCompletion" ,
47- " launchWithKeyUserId" ,
48- " launchWithKeyAutoTrackPurchasesCompletion" -> launchWith(args[" key" ] as String , internalUserId, autoTrackPurchases, result)
49- " addAttributionData" -> result.notImplemented() // since there is no such method in Android SDK
41+ " addAttributionData" -> addAttributionData(args, result)
5042 else -> result.notImplemented()
5143 }
5244 }
@@ -74,18 +66,14 @@ class QonversionFlutterSdkPlugin internal constructor(registrar: Registrar): Met
7466 )
7567 }
7668
77- // TODO remove when old methods get removed on Dart side
78- private fun launchWith (key : String? ,
79- internalUserId : String = "",
80- autoTrackPurchases : Boolean = true,
81- result : Result ) {
82- if (key == null ) {
83- return result.error(" 1" , " Could not find API key" , " Please provide valid API key" )
84- }
69+ private fun trackPurchase (args : Map <String , Any >, result : Result ) {
70+ @Suppress(" UNCHECKED_CAST" )
71+ val detailsMap = args[" details" ] as Map <String , Any >
72+ @Suppress(" UNCHECKED_CAST" )
73+ val purchaseMap = args[" purchase" ] as Map <String , Any >
8574
86- val billingBuilder = QonversionBillingBuilder ()
87- .enablePendingPurchases()
88- .setListener { _, _ -> }
75+ val details = createSkuDetails(detailsMap)
76+ val purchase = createPurchase(purchaseMap)
8977
9078 val callback = object : QonversionCallback {
9179 override fun onSuccess (uid : String ) {
@@ -97,36 +85,30 @@ class QonversionFlutterSdkPlugin internal constructor(registrar: Registrar): Met
9785 }
9886 }
9987
100- Qonversion .initialize(
101- application,
102- key,
103- internalUserId,
104- billingBuilder,
105- autoTrackPurchases,
106- callback
107- )
88+ Qonversion .instance?.purchase(details, purchase, callback)
10889 }
10990
110- private fun trackPurchase (args : Map <String , Any >, result : Result ) {
91+ private fun addAttributionData (args : Map <String , Any >, result : Result ) {
11192 @Suppress(" UNCHECKED_CAST" )
112- val detailsMap = args[" details" ] as Map <String , Any >
113- @Suppress(" UNCHECKED_CAST" )
114- val purchaseMap = args[" purchase" ] as Map <String , Any >
93+ val data = args[" data" ] as ? Map <String , Any > ? : return result.noDataError()
11594
116- val details = createSkuDetails(detailsMap)
117- val purchase = createPurchase(purchaseMap)
95+ if (data.isEmpty()) {
96+ return result.noDataError()
97+ }
11898
119- val callback = object : QonversionCallback {
120- override fun onSuccess (uid : String ) {
121- result.success(uid)
122- }
99+ val provider = args[" provider" ] as ? String ? : return result.noProviderError()
123100
124- override fun onError (t : Throwable ) {
125- result.qonversionError(t.localizedMessage, t.cause.toString())
126- }
101+ val uid = args[" userId" ] as ? String ? : return result.noUserIdError()
102+
103+ val castedProvider = when (provider) {
104+ " appsFlyer" -> AttributionSource .APPSFLYER
105+ else -> null
127106 }
107+ ? : return result.success(null )
108+
109+ Qonversion .instance?.attribution(data, castedProvider, uid)
128110
129- Qonversion .instance !! .purchase(details, purchase, callback )
111+ result.success( null )
130112 }
131113
132114 private fun createSkuDetails (map : Map <String , Any >): SkuDetails {
0 commit comments