@@ -28,6 +28,7 @@ import com.qonversion.android.sdk.dto.entitlements.QEntitlementsCacheLifetime
28
28
import com.qonversion.android.sdk.dto.offerings.QOfferings
29
29
import com.qonversion.android.sdk.dto.products.QProduct
30
30
import com.qonversion.android.sdk.dto.products.QProductType
31
+ import com.qonversion.android.sdk.internal.api.RequestTrigger
31
32
import com.qonversion.android.sdk.internal.dto.QProductRenewState
32
33
import com.qonversion.android.sdk.internal.billing.BillingError
33
34
import com.qonversion.android.sdk.internal.billing.BillingService
@@ -126,7 +127,7 @@ internal class QProductCenterManager internal constructor(
126
127
processPendingInitIfAvailable()
127
128
}
128
129
129
- fun launch (callback : QonversionLaunchCallback ? = null) {
130
+ fun launch (requestTrigger : RequestTrigger , callback : QonversionLaunchCallback ? = null) {
130
131
val launchCallback: QonversionLaunchCallback = getLaunchCallback(callback)
131
132
launchError = null
132
133
launchResultCache.resetSessionCache()
@@ -136,15 +137,15 @@ internal class QProductCenterManager internal constructor(
136
137
adProvider.init (context, object : AdvertisingProvider .Callback {
137
138
override fun onSuccess (advertisingId : String ) {
138
139
advertisingID = advertisingId
139
- continueLaunchWithPurchasesInfo(launchCallback)
140
+ continueLaunchWithPurchasesInfo(launchCallback, requestTrigger )
140
141
}
141
142
142
143
override fun onFailure (t : Throwable ) {
143
- continueLaunchWithPurchasesInfo(launchCallback)
144
+ continueLaunchWithPurchasesInfo(launchCallback, requestTrigger )
144
145
}
145
146
})
146
147
} else {
147
- continueLaunchWithPurchasesInfo(launchCallback)
148
+ continueLaunchWithPurchasesInfo(launchCallback, requestTrigger )
148
149
}
149
150
}
150
151
@@ -156,7 +157,7 @@ internal class QProductCenterManager internal constructor(
156
157
157
158
launchResultCache.sessionLaunchResult?.let {
158
159
loadStoreProductsIfPossible()
159
- } ? : launch()
160
+ } ? : launch(RequestTrigger . Products )
160
161
}
161
162
162
163
fun offerings (
@@ -204,7 +205,13 @@ internal class QProductCenterManager internal constructor(
204
205
}
205
206
}
206
207
207
- val initRequestData = InitRequestData (installDate, advertisingID, callback = launchCallback)
208
+ val initRequestData = InitRequestData (
209
+ installDate,
210
+ advertisingID,
211
+ null ,
212
+ launchCallback,
213
+ RequestTrigger .Identify
214
+ )
208
215
repository.init (initRequestData)
209
216
} else {
210
217
processIdentity(identityId)
@@ -226,7 +233,7 @@ internal class QProductCenterManager internal constructor(
226
233
internalConfig.uid = qonversionUid
227
234
remoteConfigManager.onUserUpdate()
228
235
launchResultCache.clearPermissionsCache()
229
- launch(object : QonversionLaunchCallback {
236
+ launch(RequestTrigger . Identify , object : QonversionLaunchCallback {
230
237
override fun onSuccess (launchResult : QLaunchResult ) {
231
238
fireIdentitySuccess(identityId)
232
239
}
@@ -309,7 +316,8 @@ internal class QProductCenterManager internal constructor(
309
316
if (launchError != null ) {
310
317
retryLaunch(
311
318
onSuccess = { tryToPurchase() },
312
- onError = { tryToPurchase() }
319
+ onError = { tryToPurchase() },
320
+ requestTrigger = RequestTrigger .Purchase ,
313
321
)
314
322
} else {
315
323
tryToPurchase()
@@ -394,7 +402,7 @@ internal class QProductCenterManager internal constructor(
394
402
handlePendingRequests()
395
403
}
396
404
397
- fun restore (callback : QonversionEntitlementsCallback ? = null) {
405
+ fun restore (requestTrigger : RequestTrigger , callback : QonversionEntitlementsCallback ? = null) {
398
406
callback?.let { restoreCallbacks.add(it) }
399
407
400
408
if (isRestoreInProgress) {
@@ -422,12 +430,14 @@ internal class QProductCenterManager internal constructor(
422
430
executeRestoreBlocksOnError(error)
423
431
}
424
432
}
425
- })
433
+ },
434
+ requestTrigger
435
+ )
426
436
}
427
437
}
428
438
429
439
fun syncPurchases () {
430
- restore()
440
+ restore(RequestTrigger . SyncPurchases )
431
441
}
432
442
433
443
override fun onPurchasesCompleted (purchases : List <Purchase >) {
@@ -657,11 +667,12 @@ internal class QProductCenterManager internal constructor(
657
667
}
658
668
659
669
private fun continueLaunchWithPurchasesInfo (
660
- callback : QonversionLaunchCallback ?
670
+ callback : QonversionLaunchCallback ,
671
+ requestTrigger : RequestTrigger ,
661
672
) {
662
673
fun processInitDefault () {
663
674
val initRequestData =
664
- InitRequestData (installDate, advertisingID, callback = callback)
675
+ InitRequestData (installDate, advertisingID, null , callback, requestTrigger )
665
676
processInit(initRequestData)
666
677
}
667
678
@@ -687,27 +698,28 @@ internal class QProductCenterManager internal constructor(
687
698
installDate,
688
699
advertisingID,
689
700
purchasesInfo,
690
- handledPurchasesCallback
701
+ handledPurchasesCallback,
702
+ requestTrigger
691
703
)
692
704
processInit(initRequestData)
693
705
}
694
706
}
695
707
696
708
private fun getWrappedPurchasesCallback (
697
709
trackingPurchases : List <Purchase >,
698
- outerCallback : QonversionLaunchCallback ?
710
+ outerCallback : QonversionLaunchCallback
699
711
): QonversionLaunchCallback {
700
712
return object : QonversionLaunchCallback {
701
713
override fun onSuccess (launchResult : QLaunchResult ) {
702
714
handledPurchasesCache.saveHandledPurchases(trackingPurchases)
703
715
trackingPurchases.forEach {
704
716
removePurchaseOptions(it.productId)
705
717
}
706
- outerCallback? .onSuccess(launchResult)
718
+ outerCallback.onSuccess(launchResult)
707
719
}
708
720
709
721
override fun onError (error : QonversionError ) {
710
- outerCallback? .onError(error)
722
+ outerCallback.onError(error)
711
723
}
712
724
}
713
725
}
@@ -773,7 +785,7 @@ internal class QProductCenterManager internal constructor(
773
785
774
786
private fun handleLogout () {
775
787
unhandledLogoutAvailable = false
776
- launch()
788
+ launch(RequestTrigger . Logout )
777
789
}
778
790
779
791
private fun updateLaunchResult (launchResult : QLaunchResult ) {
@@ -918,9 +930,10 @@ internal class QProductCenterManager internal constructor(
918
930
919
931
private fun retryLaunch (
920
932
onSuccess : (QLaunchResult ) -> Unit ,
921
- onError : (QonversionError ) -> Unit
933
+ onError : (QonversionError ) -> Unit ,
934
+ requestTrigger : RequestTrigger ,
922
935
) {
923
- launch(object : QonversionLaunchCallback {
936
+ launch(requestTrigger, object : QonversionLaunchCallback {
924
937
override fun onSuccess (launchResult : QLaunchResult ) = onSuccess(launchResult)
925
938
override fun onError (error : QonversionError ) = onError(error)
926
939
})
@@ -954,7 +967,9 @@ internal class QProductCenterManager internal constructor(
954
967
cachedPermissions?.let {
955
968
onSuccess(it)
956
969
} ? : onError(error)
957
- })
970
+ },
971
+ requestTrigger = RequestTrigger .ActualizePermissions
972
+ )
958
973
}
959
974
960
975
val permissions = launchResultCache.getActualPermissions() ? : emptyMap()
0 commit comments