Skip to content

Commit

Permalink
3.2.0-beta.1 (#307)
Browse files Browse the repository at this point in the history
* add setproductdetails
* finalize
* add example amazon product details
  • Loading branch information
namidan authored May 16, 2024
1 parent 2f58c54 commit 74fbc48
Show file tree
Hide file tree
Showing 14 changed files with 145 additions and 9 deletions.
2 changes: 1 addition & 1 deletion android/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"

implementation 'com.github.jeziellago:compose-markdown:0.3.0'
compileOnly "com.namiml:sdk-amazon:3.1.32"
compileOnly "com.namiml:sdk-amazon:3.2.0-beta.01"

implementation 'com.facebook.react:react-native:+' // From node_modules
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ class NamiBridgeModule(reactContext: ReactApplicationContext) :
} else {
Arguments.createArray()
}
val settingsList = mutableListOf("extendedClientInfo:react-native:3.1.34")
val settingsList = mutableListOf("extendedClientInfo:react-native:3.2.0-beta.01")
namiCommandsReact?.toArrayList()?.filterIsInstance<String>()?.let { commandsFromReact ->
settingsList.addAll(commandsFromReact)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,11 @@ class NamiPaywallManagerBridgeModule(reactContext: ReactApplicationContext) :
}
}

@ReactMethod
fun setProductDetails(productDetails: String, allowOffers: Boolean) {
NamiPaywallManager.setProductDetails(productDetails, allowOffers = false)
}

@ReactMethod
fun addListener(eventName: String?) {
}
Expand Down
2 changes: 1 addition & 1 deletion examples/Basic/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "com.facebook.react:react-native:+" // From node_modules
implementation 'com.github.jeziellago:compose-markdown:0.3.0'
implementation "com.namiml:sdk-android:3.1.32"
implementation "com.namiml:sdk-android:3.2.0-beta.01"

implementation project(':react-native-screens')

Expand Down
4 changes: 2 additions & 2 deletions examples/TestNamiTV/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,8 @@ dependencies {
implementation "com.facebook.react:react-native:+" // From node_modules
implementation 'com.github.jeziellago:compose-markdown:0.3.0'

amazonImplementation "com.namiml:sdk-amazon:3.1.32"
playImplementation "com.namiml:sdk-android:3.1.32"
amazonImplementation "com.namiml:sdk-amazon:3.2.0-beta.01"
playImplementation "com.namiml:sdk-android:3.2.0-beta.01"

if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";
Expand Down
13 changes: 12 additions & 1 deletion examples/TestNamiTV/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,32 @@
* @format
*/
import React, { useEffect, useState } from 'react';
import { Platform } from 'react-native';
import { View } from 'react-native';
import { AppRegistry } from 'react-native';
import { Nami } from 'react-native-nami-sdk';
import { Nami, NamiPaywallManager } from 'react-native-nami-sdk';
import App from './App';
import { name as appName } from './app.json';
import { getConfigObject } from './config';
import amazonSideloadProducts from './nami_amazon_product_details.json';

const configDict = getConfigObject();
console.log('configDict', configDict);

export const getAmazonProducts = () => {
return JSON.stringify(amazonSideloadProducts);
};

const Root = () => {
const [isConfigurationComplete, setIsConfigurationComplete] = useState();
useEffect(() => {
Nami.configure(configDict, (resultObject) => {
setIsConfigurationComplete(true);

if (Platform.constants.Manufacturer === 'Amazon') {
NamiPaywallManager.setProductDetails(getAmazonProducts(), false);
}

});
// eslint-disable-next-line @typescript-eslint/no-empty-function
return () => {};
Expand Down
101 changes: 101 additions & 0 deletions examples/TestNamiTV/nami_amazon_product_details.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
{
"products": [
{
"originalJson": {
"sku": "poc_premium_annual_testnami_stg",
"productType": "SUBSCRIPTION",
"description": "With Nami+, stay connected with premium content.",
"price": "$99.99",
"smallIconUrl": "",
"title": "POC Premium Annual",
"coinsRewardsAmount": 0,
"subscriptionPeriod": "Annual",
"freeTrialPeriod": "7 days",
"promotions": [
{
"promotionType": "Introductory",
"promotionPlans": [
{
"promotionPricePeriod": "SemiAnnual",
"promotionPrice": "$39.99",
"promotionPriceCycles": 1
}
]
}
]
},
"originalPrice": "$99.99",
"iconUrl": "",
"title": "POC Premium Annual",
"localizedPrice": "$99.99",
"price": "$99.99",
"type": "subs",
"description": "With Nami+, stay connected with premium content.",
"productId": "poc_premium_annual_testnami_stg",
"currency": "USD"
},
{
"originalJson": {
"sku": "poc_premium_monthly_testnami_stg",
"productType": "SUBSCRIPTION",
"description": "With Nami+, stay connected with premium content.",
"price": "$14.99",
"smallIconUrl": "",
"title": "POC Premium Monthly",
"coinsRewardsAmount": 0,
"subscriptionPeriod": "Monthly"
},
"originalPrice": "$14.99",
"iconUrl": "",
"title": "POC Premium Monthly",
"localizedPrice": "$14.99",
"price": "$14.99",
"type": "subs",
"description": "With Nami+, stay connected with premium content.",
"productId": "poc_premium_monthly_testnami_stg",
"currency": "USD"
},
{
"originalJson": {
"sku": "poc_base_annual_testnami_stg",
"productType": "SUBSCRIPTION",
"description": "With Nami+, stay connected with premium content.",
"price": "$49.99",
"smallIconUrl": "",
"title": "POC Base Annual",
"coinsRewardsAmount": 0,
"subscriptionPeriod": "Annual"
},
"originalPrice": "$49.99",
"iconUrl": "",
"title": "POC Base Annual",
"localizedPrice": "$49.99",
"price": "$49.99",
"type": "subs",
"description": "With Nami+, stay connected with premium content.",
"productId": "poc_base_annual_testnami_stg",
"currency": "USD"
},
{
"originalJson": {
"sku": "poc_base_monthly_testnami_stg",
"title": "POC Base Monthly",
"productType": "SUBSCRIPTION",
"description": "With Nami+, stay connected with premium content.",
"price": "$6.99",
"smallIconUrl": "",
"coinsRewardsAmount": 0,
"subscriptionPeriod": "Monthly"
},
"originalPrice": "$6.99",
"iconUrl": "",
"title": "POC Base Monthly",
"localizedPrice": "$6.99",
"price": "$6.99",
"type": "subs",
"description": "With Nami+, stay connected with premium content.",
"productId": "poc_base_monthly_testnami_stg",
"currency": "USD"
}
]
}
2 changes: 1 addition & 1 deletion ios/Nami.m
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ @implementation NamiBridge (RCTExternModule)
}

// Start commands with header iformation for Nami to let them know this is a React client.
NSMutableArray *namiCommandStrings = [NSMutableArray arrayWithArray:@[@"extendedClientInfo:react-native:3.1.34"]];
NSMutableArray *namiCommandStrings = [NSMutableArray arrayWithArray:@[@"extendedClientInfo:react-native:3.2.0-beta.1"]];

// Add additional namiCommands app may have sent in.
NSObject *appCommandStrings = configDict[@"namiCommands"];
Expand Down
3 changes: 3 additions & 0 deletions ios/NamiPaywallManagerBridge.m
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,9 @@ @interface RCT_EXTERN_MODULE(RNNamiPaywallManager, NSObject)

RCT_EXTERN_METHOD(buySkuCancel)

RCT_EXTERN_METHOD(setProductDetails:(NSString *)productDetails allowOffers:(BOOL *))


+ (BOOL)requiresMainQueueSetup {
return YES;
}
Expand Down
5 changes: 5 additions & 0 deletions ios/NamiPaywallManagerBridge.swift
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,9 @@ class RNNamiPaywallManager: RCTEventEmitter {
resolve(isPaywallOpen)
}
}

@objc(setProductDetails:allowOffers:)
func setProductDetails(productDetails: String, allowOffers: Bool) {
// Do nothing on Apple
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "react-native-nami-sdk",
"version": "3.1.34",
"version": "3.2.0-beta.1",
"description": "React Native Module for Nami - Easy subscriptions & in-app purchases, with powerful built-in paywalls and A/B testing.",
"main": "index.ts",
"types": "index.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion react-native-nami-sdk.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Pod::Spec.new do |s|
s.source_files = "ios/**/*.{h,m,swift}"
s.requires_arc = true

s.dependency 'Nami', '3.1.34'
s.dependency 'Nami', '3.2.0-beta.01'
s.dependency 'React'

end
1 change: 1 addition & 0 deletions src/NamiPaywallManager.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export const NamiPaywallManager: {
buySkuCancel: () => void;
isHidden: () => Promise<boolean>;
isPaywallOpen: () => Promise<boolean>;
setProductDetails: (productDetails: string, allowOffers: boolean) => void;
};

export type NamiPurchaseSuccessApple = {
Expand Down
10 changes: 10 additions & 0 deletions src/NamiPaywallManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ export interface INamiPaywallManager {
hide: () => void;
isHidden: () => Promise<boolean>;
isPaywallOpen: () => Promise<boolean>;
setProductDetails: (productDetails: string, allowOffers: boolean) => void;
}

const { NamiPaywallManagerBridge, RNNamiPaywallManager } = NativeModules;
Expand Down Expand Up @@ -160,4 +161,13 @@ export const NamiPaywallManager: INamiPaywallManager = {
isPaywallOpen: () => {
return RNNamiPaywallManager.isPaywallOpen();
},
setProductDetails: (
productDetails: string,
allowOffers: boolean
) => {
RNNamiPaywallManager.setProductDetails(
productDetails,
allowOffers,
);
},
};

0 comments on commit 74fbc48

Please sign in to comment.