Skip to content

Commit d4cccdb

Browse files
authored
Merge pull request #156 from qonversion/release/3.4.0
Release 3.4.0
2 parents d101919 + 1b2c4ab commit d4cccdb

12 files changed

Lines changed: 89 additions & 15 deletions

File tree

.github/workflows/publish.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
name: Publish
22

33
on:
4-
workflow_dispatch
4+
release:
5+
types: [released]
56

67
jobs:
78
publish:

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ repositories {
6767
dependencies {
6868
//noinspection GradleDynamicVersion
6969
implementation 'com.facebook.react:react-native:+' // From node_modules
70-
implementation "io.qonversion.android.sdk:sdk:3.2.7"
70+
implementation "io.qonversion.android.sdk:sdk:3.3.0"
7171
implementation "com.google.firebase:firebase-messaging:21.0.1" // Used for Qonversion.handleNotification compilation
7272
}
7373

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

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.qonversion.android.sdk.QonversionProductsCallback;
2424
import com.qonversion.android.sdk.UpdatedPurchasesListener;
2525
import com.qonversion.android.sdk.dto.QLaunchResult;
26+
import com.qonversion.android.sdk.dto.QPermissionsCacheLifetime;
2627
import com.qonversion.android.sdk.dto.experiments.QExperimentInfo;
2728
import com.qonversion.android.sdk.dto.offerings.QOffering;
2829
import com.qonversion.android.sdk.dto.offerings.QOfferings;
@@ -58,6 +59,18 @@ public class QonversionModule extends ReactContextBaseJavaModule {
5859
put("KOCHAVA_DEVICE_ID", QUserProperties.KochavaDeviceId);
5960
put("CUSTOM_USER_ID", QUserProperties.CustomUserId);
6061
put("FACEBOOK_ATTRIBUTION", QUserProperties.FacebookAttribution);
62+
put("FIREBASE_APP_INSTANCE_ID", QUserProperties.FirebaseAppInstanceId);
63+
}};
64+
65+
private static final HashMap<String, QPermissionsCacheLifetime> cacheLifetimeMap = new HashMap<String, QPermissionsCacheLifetime>() {{
66+
put("WEEK", QPermissionsCacheLifetime.WEEK);
67+
put("TWO_WEEKS", QPermissionsCacheLifetime.TWO_WEEKS);
68+
put("MONTH", QPermissionsCacheLifetime.MONTH);
69+
put("TWO_MONTHS", QPermissionsCacheLifetime.TWO_MONTHS);
70+
put("THREE_MONTHS", QPermissionsCacheLifetime.THREE_MONTHS);
71+
put("SIX_MONTHS", QPermissionsCacheLifetime.SIX_MONTHS);
72+
put("YEAR", QPermissionsCacheLifetime.YEAR);
73+
put("UNLIMITED", QPermissionsCacheLifetime.UNLIMITED);
6174
}};
6275

6376
private DeviceEventManagerModule.RCTDeviceEventEmitter eventEmitter = null;
@@ -477,6 +490,15 @@ public void onPermissionsUpdate(@NonNull Map<String, QPermission> map) {
477490
});
478491
}
479492

493+
@ReactMethod
494+
public void setPermissionsCacheLifetime(final String lifetime) {
495+
QPermissionsCacheLifetime cacheLifetime = cacheLifetimeMap.get(lifetime);
496+
497+
if (cacheLifetime != null) {
498+
Qonversion.setPermissionsCacheLifetime(cacheLifetime);
499+
}
500+
}
501+
480502
private void rejectWithError(@NonNull QonversionError qonversionError, final Promise promise) {
481503
String errorMessage = qonversionError.getDescription() + "\n" + qonversionError.getAdditionalMessage();
482504
promise.reject(qonversionError.getCode().toString(), errorMessage);

example/ios/Podfile.lock

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -75,9 +75,9 @@ PODS:
7575
- glog (0.3.5)
7676
- libevent (2.1.12)
7777
- OpenSSL-Universal (1.1.1100)
78-
- Qonversion (2.18.4):
79-
- Qonversion/Main (= 2.18.4)
80-
- Qonversion/Main (2.18.4)
78+
- Qonversion (2.20.0):
79+
- Qonversion/Main (= 2.20.0)
80+
- Qonversion/Main (2.20.0)
8181
- RCT-Folly (2021.06.28.00-v2):
8282
- boost
8383
- DoubleConversion
@@ -285,8 +285,8 @@ PODS:
285285
- React-jsinspector (0.68.2)
286286
- React-logger (0.68.2):
287287
- glog
288-
- react-native-qonversion (3.3.1):
289-
- Qonversion (= 2.18.4)
288+
- react-native-qonversion (3.3.3):
289+
- Qonversion (= 2.20.0)
290290
- React
291291
- React-perflogger (0.68.2)
292292
- React-RCTActionSheet (0.68.2):
@@ -525,7 +525,7 @@ SPEC CHECKSUMS:
525525
glog: 476ee3e89abb49e07f822b48323c51c57124b572
526526
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
527527
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c
528-
Qonversion: 307b7f9db2232781d6cd1dd17d25481ab0360c3b
528+
Qonversion: 11af455df897239813c302f9d8916c66515a6335
529529
RCT-Folly: 4d8508a426467c48885f1151029bc15fa5d7b3b8
530530
RCTRequired: 3e917ea5377751094f38145fdece525aa90545a0
531531
RCTTypeSafety: c43c072a4bd60feb49a9570b0517892b4305c45e
@@ -539,7 +539,7 @@ SPEC CHECKSUMS:
539539
React-jsiexecutor: b7b553412f2ec768fe6c8f27cd6bafdb9d8719e6
540540
React-jsinspector: c5989c77cb89ae6a69561095a61cce56a44ae8e8
541541
React-logger: a0833912d93b36b791b7a521672d8ee89107aff1
542-
react-native-qonversion: 835c1e489b77d6c1696b9a0e8736bef6c9c4288b
542+
react-native-qonversion: 174fbec5fb66f77071aa5cc3697ae1f318276fdb
543543
React-perflogger: a18b4f0bd933b8b24ecf9f3c54f9bf65180f3fe6
544544
React-RCTActionSheet: 547fe42fdb4b6089598d79f8e1d855d7c23e2162
545545
React-RCTAnimation: bc9440a1c37b06ae9ebbb532d244f607805c6034

ios/EntitiesConverter.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ NS_ASSUME_NONNULL_BEGIN
2323
+ (NSDictionary *)convertError:(NSError *)error;
2424
+ (NSDictionary *)convertAutomationsEvent:(QONAutomationsEvent *)event;
2525
+ (NSNumber *)propertyForString:(NSString *)key;
26+
+ (NSNumber *)permissionsCacheLifetimeForString:(NSString *)key;
2627

2728
@end
2829

ios/EntitiesConverter.m

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,10 +297,26 @@ + (NSNumber *)propertyForString:(NSString *)key {
297297
@"ADJUST_USER_ID": @(QNPropertyAdjustUserID),
298298
@"KOCHAVA_DEVICE_ID": @(QNPropertyKochavaDeviceID),
299299
@"ADVERTISING_ID": @(QNPropertyAdvertisingID),
300-
@"CUSTOM_USER_ID": @(QNPropertyUserID)
300+
@"CUSTOM_USER_ID": @(QNPropertyUserID),
301+
@"FIREBASE_APP_INSTANCE_ID": @(QNPropertyFirebaseAppInstanceId)
301302
};
302303

303304
return propertiesMap[key];
304305
}
305306

307+
+ (NSNumber *)permissionsCacheLifetimeForString:(NSString *)key {
308+
NSDictionary *permissionsCacheLifetimeMap = @{
309+
@"WEEK": @(QNPermissionsCacheLifetimeWeek),
310+
@"TWO_WEEKS": @(QNPermissionsCacheLifetimeTwoWeeks),
311+
@"MONTH": @(QNPermissionsCacheLifetimeMonth),
312+
@"TWO_MONTHS": @(QNPermissionsCacheLifetimeTwoMonth),
313+
@"THREE_MONTHS": @(QNPermissionsCacheLifetimeThreeMonth),
314+
@"SIX_MONTHS": @(QNPermissionsCacheLifetimeSixMonth),
315+
@"YEAR": @(QNPermissionsCacheLifetimeYear),
316+
@"UNLIMITED": @(QNPermissionsCacheLifetimeUnlimited)
317+
};
318+
319+
return permissionsCacheLifetimeMap[key];
320+
}
321+
306322
@end

ios/RNQonversion.m

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,6 +228,15 @@ @implementation RNQonversion
228228
}
229229
}
230230

231+
RCT_EXPORT_METHOD(setPermissionsCacheLifetime:(NSString *)lifetime)
232+
{
233+
NSNumber *lifetimeNumber = [EntitiesConverter permissionsCacheLifetimeForString:lifetime];
234+
235+
if (lifetimeNumber) {
236+
[Qonversion setPermissionsCacheLifetime:lifetimeNumber.integerValue];
237+
}
238+
}
239+
231240
#pragma mark - Private
232241

233242
- (void)purchaseWithId:(NSString *)productId offeringId:(NSString *)offeringId completion:(RCTResponseSenderBlock)completion rejecter:(RCTPromiseRejectBlock)reject {

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "react-native-qonversion",
33
"title": "React Native Qonversion",
4-
"version": "3.3.3",
4+
"version": "3.4.0",
55
"description": "Qonversion provides full in-app purchases infrastructure, so you do not need to build your own server for receipt validation. Implement in-app subscriptions, validate user receipts, check subscription status, and provide access to your app features and content using our StoreKit wrapper and Google Play Billing wrapper.",
66
"main": "build/index.js",
77
"scripts": {

react-native-qonversion.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ Pod::Spec.new do |s|
2222
s.requires_arc = true
2323

2424
s.dependency "React"
25-
s.dependency "Qonversion", "2.18.4"
25+
s.dependency "Qonversion", "2.20.0"
2626
end

src/classes/Qonversion.ts

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import {NativeEventEmitter, NativeModules} from "react-native";
2-
import {Property, ProrationMode, Provider} from "../enums";
2+
import {PermissionsCacheLifetime, Property, ProrationMode, Provider} from "../enums";
33
import ExperimentInfo from "./ExperimentInfo";
44
import IntroEligibility from "./IntroEligibility";
55
import LaunchResult from "./LaunchResult";
@@ -16,7 +16,7 @@ const {RNQonversion} = NativeModules;
1616
const keyPrefix = "com.qonversion.keys";
1717
const sourceKey = keyPrefix + ".source";
1818
const versionKey = keyPrefix + ".sourceVersion";
19-
const sdkVersion = "3.3.3";
19+
const sdkVersion = "3.4.0";
2020

2121
const EVENT_PERMISSIONS_UPDATED = "permissions_updated";
2222
const EVENT_PROMO_PURCHASE_RECEIVED = "promo_purchase_received";
@@ -478,4 +478,16 @@ export default class Qonversion {
478478
});
479479
RNQonversion.subscribeOnPromoPurchases();
480480
}
481+
482+
/**
483+
* Permissions cache is used when there are problems with the Qonversion API
484+
* or internet connection. If so, Qonversion will return the last successfully loaded
485+
* permissions. The current method allows you to configure how long that cache may be used.
486+
* The default value is {@link PermissionsCacheLifetime.MONTH}.
487+
*
488+
* @param lifetime desired permissions cache lifetime duration
489+
*/
490+
static setPermissionsCacheLifetime(lifetime: PermissionsCacheLifetime) {
491+
RNQonversion.setPermissionsCacheLifetime(lifetime);
492+
}
481493
}

0 commit comments

Comments
 (0)