Skip to content

Commit 1754316

Browse files
authored
Adds checkTrialOrIntroductoryPriceEligibility (#100)
* Adds checkTrialOrIntroductoryPriceEligibility and upgrades the native versions * adds test * updates npmignore * Updates version * tslint
1 parent 6be0b1c commit 1754316

File tree

17 files changed

+217
-29
lines changed

17 files changed

+217
-29
lines changed

.npmignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,8 @@ local.properties
77
.vscode
88
src/
99
tsconfig.json
10-
10+
*.iml
11+
android/build
12+
.DS_Store
13+
.circleci/config.yml
14+
RELEASING.md

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
## 3.0.3
2+
3+
- Adds `Purchases.checkTrialOrIntroductoryPriceEligibility`. Note that Android always returns INTRO_ELIGIBILITY_STATUS_UNKNOWN.
4+
- Updates iOS to 3.0.1 and Android to 3.0.4
5+
16
## 3.0.2
27

38
- Adds `Purchases.addShouldPurchasePromoProduct` to be able to handle purchases started from the Apple App Store.

RNPurchases.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,5 @@ Pod::Spec.new do |spec|
1919
spec.exclude_files = "ios/Purchases.framework"
2020

2121
spec.dependency "React"
22-
spec.dependency "Purchases", "~> 3.0.0"
22+
spec.dependency "Purchases", "~> 3.0.1"
2323
end

VERSIONS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
| Version | iOS version | Android version | Common files version |
22
|---------|-------------|-----------------|----------------------|
3+
| 3.0.3 | 3.0.1 | 3.0.4 | 1.0.4 |
34
| 3.0.2 | 3.0.0 | 3.0.3 | 1.0.3 |
45
| 3.0.1 | 3.0.0 | 3.0.3 | 1.0.1 |
56
| 3.0.0 | 3.0.0 | 3.0.2 | 1.0.1 |

__tests__/index.test.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,14 @@ describe("Purchases", () => {
518518
expect(NativeModules.RNPurchases.setFinishTransactions).toBeCalledTimes(2);
519519
})
520520

521+
it("checkTrialOrIntroductoryPriceEligibility works", () => {
522+
const Purchases = require("../index").default;
523+
524+
Purchases.checkTrialOrIntroductoryPriceEligibility(["monthly"])
525+
526+
expect(NativeModules.RNPurchases.checkTrialOrIntroductoryPriceEligibility).toBeCalledWith(["monthly"]);
527+
})
528+
521529
const mockPlatform = OS => {
522530
jest.resetModules();
523531
jest.doMock("Platform", () => ({OS, select: objs => objs[OS]}));

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,6 @@ repositories {
3838
dependencies {
3939
//noinspection GradleDynamicVersion
4040
api 'com.facebook.react:react-native:+'
41-
implementation 'com.revenuecat.purchases:purchases:3.0.3'
41+
implementation 'com.revenuecat.purchases:purchases:3.0.4'
4242
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
4343
}

android/common/build.gradle

Lines changed: 0 additions & 2 deletions
This file was deleted.

android/common/common-release.aar

-54.1 KB
Binary file not shown.

android/src/main/java/com/reactlibrary/RNPurchasesModule.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import androidx.annotation.NonNull;
66
import androidx.annotation.Nullable;
77

8-
import com.android.billingclient.api.SkuDetails;
98
import com.facebook.react.bridge.Arguments;
109
import com.facebook.react.bridge.Promise;
1110
import com.facebook.react.bridge.ReactApplicationContext;
@@ -188,6 +187,15 @@ public void isAnonymous(final Promise promise) {
188187
promise.resolve(CommonKt.isAnonymous());
189188
}
190189

190+
@ReactMethod
191+
public void checkTrialOrIntroductoryPriceEligibility(ReadableArray productIDs, final Promise promise) {
192+
ArrayList<String> productIDList = new ArrayList<>();
193+
for (int i = 0; i < productIDs.size(); i++) {
194+
productIDList.add(productIDs.getString(i));
195+
}
196+
promise.resolve(convertMapToWriteableMap(CommonKt.checkTrialOrIntroductoryPriceEligibility(productIDList)));
197+
}
198+
191199
@Override
192200
public void onReceived(@NonNull PurchaserInfo purchaserInfo) {
193201
reactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)

android/src/main/java/com/revenuecat/purchases/common/common.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,16 @@ fun setFinishTransactions(
256256
Purchases.sharedInstance.finishTransactions = enabled
257257
}
258258

259+
// Returns Unknown for all since it's not available in Android
260+
fun checkTrialOrIntroductoryPriceEligibility(
261+
productIdentifiers: List<String>
262+
): Map<String, Map<String, Any>> {
263+
// INTRO_ELIGIBILITY_STATUS_UNKNOWN = 0
264+
return productIdentifiers.map {
265+
it to mapOf("status" to 0, "description" to "Status indeterminate.")
266+
}.toMap()
267+
}
268+
259269
private fun getMakePurchaseErrorFunction(onResult: OnResult): (PurchasesError, Boolean) -> Unit {
260270
return { error, userCancelled -> onResult.onError(error.map(mapOf("userCancelled" to userCancelled))) }
261271
}

0 commit comments

Comments
 (0)