Skip to content

Commit d922931

Browse files
authored
Change PurchaseCallback on rx payments related to poolakey version 2 (#65)
1 parent f179fb8 commit d922931

2 files changed

Lines changed: 26 additions & 16 deletions

File tree

  • poolakey-rx3/src/main/java/ir/cafebazaar/poolakey/rx3
  • poolakey-rx/src/main/java/ir/cafebazaar/poolakey/rx

poolakey-rx/src/main/java/ir/cafebazaar/poolakey/rx/PaymentRx.kt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import ir.cafebazaar.poolakey.entity.PurchaseInfo
1010
import ir.cafebazaar.poolakey.entity.SkuDetails
1111
import ir.cafebazaar.poolakey.entity.TrialSubscriptionInfo
1212
import ir.cafebazaar.poolakey.request.PurchaseRequest
13+
import ir.cafebazaar.poolakey.rxbase.exception.PurchaseCanceledException
1314

1415
/**
1516
* You have to use this function to connect to the In-App Billing service. Note that you have to
@@ -38,15 +39,17 @@ fun Payment.connect(): Observable<Connection> {
3839
* @see subscribeProduct
3940
* @param registry We use this activityResultRegistry instance to actually start Bazaar's payment activity.
4041
* @param request This contains some information about the product that we are going to purchase.
41-
* @return Completable that you can subscribe to it and it gets completed when purchase flow begins.
42+
* @return Single that you can subscribe to it and get the PurchaseInfo.
4243
*/
4344
fun Payment.purchaseProduct(
4445
registry: ActivityResultRegistry,
4546
request: PurchaseRequest
46-
): Completable {
47-
return Completable.create { emitter ->
47+
): Single<PurchaseInfo> {
48+
return Single.create { emitter ->
4849
purchaseProduct(registry, request) {
49-
purchaseFlowBegan { emitter.onComplete() }
50+
purchaseSucceed { emitter.onSuccess(it) }
51+
purchaseCanceled { emitter.onError(PurchaseCanceledException()) }
52+
purchaseFailed { emitter.onError(it) }
5053
failedToBeginFlow { emitter.onError(it) }
5154
}
5255
}
@@ -77,15 +80,17 @@ fun Payment.consumeProduct(purchaseToken: String): Completable {
7780
* @see purchaseProduct
7881
* @param registry We use this activityResultRegistry instance to actually start Bazaar's payment activity.
7982
* @param request This contains some information about the product that we are going to subscribe.
80-
* @return Completable that you can subscribe to it and it gets completed when purchase flow begins.
83+
* @return Single that you can subscribe to it and get the PurchaseInfo.
8184
*/
8285
fun Payment.subscribeProduct(
8386
registry: ActivityResultRegistry,
8487
request: PurchaseRequest
85-
): Completable {
86-
return Completable.create { emitter ->
88+
): Single<PurchaseInfo> {
89+
return Single.create { emitter ->
8790
subscribeProduct(registry, request) {
88-
purchaseFlowBegan { emitter.onComplete() }
91+
purchaseSucceed { emitter.onSuccess(it) }
92+
purchaseCanceled { emitter.onError(PurchaseCanceledException()) }
93+
purchaseFailed { emitter.onError(it) }
8994
failedToBeginFlow { emitter.onError(it) }
9095
}
9196
}

poolakey-rx3/src/main/java/ir/cafebazaar/poolakey/rx3/PaymentRx3.kt

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import ir.cafebazaar.poolakey.entity.PurchaseInfo
1010
import ir.cafebazaar.poolakey.entity.SkuDetails
1111
import ir.cafebazaar.poolakey.entity.TrialSubscriptionInfo
1212
import ir.cafebazaar.poolakey.request.PurchaseRequest
13+
import ir.cafebazaar.poolakey.rxbase.exception.PurchaseCanceledException
1314

1415
/**
1516
* You have to use this function to connect to the In-App Billing service. Note that you have to
@@ -38,15 +39,17 @@ fun Payment.connect(): Observable<Connection> {
3839
* @see subscribeProduct
3940
* @param registry We use this activityResultRegistry instance to actually start Bazaar's payment activity.
4041
* @param request This contains some information about the product that we are going to purchase.
41-
* @return Completable that you can subscribe to it and it gets completed when purchase flow begins.
42+
* @return Single that you can subscribe to it and get the PurchaseInfo.
4243
*/
4344
fun Payment.purchaseProduct(
4445
registry: ActivityResultRegistry,
4546
request: PurchaseRequest
46-
): Completable {
47-
return Completable.create { emitter ->
47+
): Single<PurchaseInfo> {
48+
return Single.create { emitter ->
4849
purchaseProduct(registry, request) {
49-
purchaseFlowBegan { emitter.onComplete() }
50+
purchaseSucceed { emitter.onSuccess(it) }
51+
purchaseCanceled { emitter.onError(PurchaseCanceledException()) }
52+
purchaseFailed { emitter.onError(it) }
5053
failedToBeginFlow { emitter.onError(it) }
5154
}
5255
}
@@ -77,15 +80,17 @@ fun Payment.consumeProduct(purchaseToken: String): Completable {
7780
* @see purchaseProduct
7881
* @param registry We use this activityResultRegistry instance to actually start Bazaar's payment activity.
7982
* @param request This contains some information about the product that we are going to subscribe.
80-
* @return Completable that you can subscribe to it and it gets completed when purchase flow begins.
83+
* @return Single that you can subscribe to it and get the PurchaseInfo.
8184
*/
8285
fun Payment.subscribeProduct(
8386
registry: ActivityResultRegistry,
8487
request: PurchaseRequest
85-
): Completable {
86-
return Completable.create { emitter ->
88+
): Single<PurchaseInfo> {
89+
return Single.create { emitter ->
8790
subscribeProduct(registry, request) {
88-
purchaseFlowBegan { emitter.onComplete() }
91+
purchaseSucceed { emitter.onSuccess(it) }
92+
purchaseCanceled { emitter.onError(PurchaseCanceledException()) }
93+
purchaseFailed { emitter.onError(it) }
8994
failedToBeginFlow { emitter.onError(it) }
9095
}
9196
}

0 commit comments

Comments
 (0)