react-native-nami-sdk 3.1.14 → 3.1.18-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -84,7 +84,7 @@ dependencies {
84
84
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
85
85
 
86
86
  implementation 'com.github.jeziellago:compose-markdown:0.3.0'
87
- compileOnly "com.namiml:sdk-amazon:3.1.16"
87
+ compileOnly "com.namiml:sdk-amazon:3.1.18-beta.01"
88
88
 
89
89
  implementation 'com.facebook.react:react-native:+' // From node_modules
90
90
  coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:1.1.5"
@@ -1,6 +1,5 @@
1
1
  package com.nami.reactlibrary
2
2
 
3
- import android.app.Application
4
3
  import android.content.Context
5
4
  import android.util.Log
6
5
  import com.facebook.react.bridge.Arguments
@@ -10,7 +9,6 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule
10
9
  import com.facebook.react.bridge.ReactMethod
11
10
  import com.facebook.react.bridge.ReadableArray
12
11
  import com.facebook.react.bridge.ReadableMap
13
- import com.facebook.react.bridge.Promise
14
12
  import com.namiml.Nami
15
13
  import com.namiml.NamiConfiguration
16
14
  import com.namiml.NamiLanguageCode
@@ -79,7 +77,7 @@ class NamiBridgeModule(reactContext: ReactApplicationContext) :
79
77
  false
80
78
  }
81
79
  if (developmentMode) {
82
- Log.d(LOG_TAG, "NAMI: RN Bridge - development mode is $developmentMode")
80
+ Log.d(LOG_TAG, "NAMI: RN Bridge - development mode is $developmentMode")
83
81
  builder.developmentMode = true
84
82
  }
85
83
 
@@ -108,7 +106,7 @@ class NamiBridgeModule(reactContext: ReactApplicationContext) :
108
106
  } else {
109
107
  Arguments.createArray()
110
108
  }
111
- val settingsList = mutableListOf("extendedClientInfo:react-native:3.1.14")
109
+ val settingsList = mutableListOf("extendedClientInfo:react-native:3.1.18-beta.1")
112
110
  namiCommandsReact?.toArrayList()?.filterIsInstance<String>()?.let { commandsFromReact ->
113
111
  settingsList.addAll(commandsFromReact)
114
112
  }
@@ -132,7 +130,6 @@ class NamiBridgeModule(reactContext: ReactApplicationContext) :
132
130
  Log.d(LOG_TAG, "Nami Configuration object is $builtConfig")
133
131
 
134
132
  reactApplicationContext.runOnUiQueueThread {
135
-
136
133
  // Configure must be called on main thread
137
134
  Nami.configure(builtConfig) { result ->
138
135
  val resultMap = Arguments.createMap()
@@ -10,8 +10,8 @@ import com.namiml.billing.NamiPurchase
10
10
  import com.namiml.campaign.LaunchCampaignResult
11
11
  import com.namiml.campaign.NamiCampaign
12
12
  import com.namiml.campaign.NamiCampaignManager
13
- import com.namiml.paywall.model.PaywallLaunchContext
14
13
  import com.namiml.paywall.model.NamiPaywallEvent
14
+ import com.namiml.paywall.model.PaywallLaunchContext
15
15
 
16
16
  class NamiCampaignManagerBridgeModule(reactContext: ReactApplicationContext) :
17
17
  ReactContextBaseJavaModule(reactContext), ActivityEventListener {
@@ -1,8 +1,6 @@
1
1
  package com.nami.reactlibrary
2
2
 
3
- import android.util.Log
4
3
  import com.facebook.react.bridge.*
5
- import com.facebook.react.modules.core.DeviceEventManagerModule
6
4
  import com.namiml.Nami
7
5
 
8
6
  class NamiManagerBridgeModule(reactContext: ReactApplicationContext) :
@@ -27,12 +27,6 @@ class NamiPaywallManagerBridgeModule(reactContext: ReactApplicationContext) :
27
27
  var productId: String? = null
28
28
  var skuRefId: String? = null
29
29
  var typeString: String? = null
30
- var purchaseSourceString: String? = null
31
- var expiresDateInt: Int? = null
32
- var purchaseDateInt: Int? = null
33
-
34
- var expiresDate: Date? = null
35
- var purchaseDate: Date? = null
36
30
 
37
31
  var skuType: NamiSKUType?
38
32
 
@@ -62,34 +56,6 @@ class NamiPaywallManagerBridgeModule(reactContext: ReactApplicationContext) :
62
56
  }
63
57
  }
64
58
 
65
- if (dict.hasKey("purchaseSource")) {
66
- purchaseSourceString = dict.getString("purchaseSource")
67
- }
68
-
69
- if (dict.hasKey("expiresDate")) {
70
- expiresDateInt = dict.getInt("expiresDate")
71
- expiresDate = Date(expiresDateInt * 1000L)
72
- }
73
- if (dict.hasKey("purchaseDate")) {
74
- purchaseDateInt = dict.getInt("purchaseDate")
75
- purchaseDate = Date(purchaseDateInt * 1000L)
76
- }
77
-
78
- val purchaseSource = when (purchaseSourceString) {
79
- "CAMPAIGN" -> {
80
- NamiPurchaseSource.CAMPAIGN
81
- }
82
- "MARKETPLACE" -> {
83
- NamiPurchaseSource.MARKETPLACE
84
- }
85
- "UNKNOWN" -> {
86
- NamiPurchaseSource.UNKNOWN
87
- }
88
- else -> {
89
- NamiPurchaseSource.UNKNOWN
90
- }
91
- }
92
-
93
59
  if (productId != null && skuRefId != null) {
94
60
  val namiSku = NamiSKU.create(
95
61
  skuRefId = skuRefId,
@@ -104,15 +70,11 @@ class NamiPaywallManagerBridgeModule(reactContext: ReactApplicationContext) :
104
70
  if (dict.hasKey("orderId")) {
105
71
  orderId = dict.getString("orderId")
106
72
  }
107
- Log.d(LOG_TAG, "$namiSku $purchaseToken $orderId $purchaseDateInt $purchaseDate")
73
+ Log.d(LOG_TAG, "$namiSku $purchaseToken $orderId")
108
74
 
109
- if (namiSku != null && purchaseToken != null && orderId != null && purchaseDate != null) {
75
+ if (namiSku != null && purchaseToken != null && orderId != null) {
110
76
  purchaseSuccess = NamiPurchaseSuccess.GooglePlay(
111
77
  product = namiSku,
112
- expiresDate = expiresDate,
113
- purchaseDate = purchaseDate,
114
- purchaseSource = purchaseSource,
115
- description = null,
116
78
  orderId = orderId,
117
79
  purchaseToken = purchaseToken,
118
80
  )
@@ -130,13 +92,9 @@ class NamiPaywallManagerBridgeModule(reactContext: ReactApplicationContext) :
130
92
  if (dict.hasKey("marketplace")) {
131
93
  marketplace = dict.getString("marketplace")
132
94
  }
133
- if (namiSku != null && receiptId != null && localizedPrice != null && userId != null && marketplace != null && purchaseDate != null) {
95
+ if (namiSku != null && receiptId != null && localizedPrice != null && userId != null && marketplace != null) {
134
96
  purchaseSuccess = NamiPurchaseSuccess.Amazon(
135
97
  product = namiSku,
136
- expiresDate = expiresDate,
137
- purchaseDate = purchaseDate,
138
- purchaseSource = purchaseSource,
139
- description = null,
140
98
  receiptId = receiptId,
141
99
  localizedPrice = localizedPrice,
142
100
  userId = userId,
@@ -213,16 +171,14 @@ class NamiPaywallManagerBridgeModule(reactContext: ReactApplicationContext) :
213
171
 
214
172
  @ReactMethod
215
173
  fun registerDeeplinkActionHandler() {
216
- NamiPaywallManager.registerDeepLinkHandler { activity , url ->
174
+ NamiPaywallManager.registerDeepLinkHandler { activity, url ->
217
175
  latestPaywallActivity = activity
218
176
  reactApplicationContext
219
177
  .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
220
178
  .emit("PaywallDeeplinkAction", url)
221
179
  }
222
-
223
180
  }
224
181
 
225
-
226
182
  @ReactMethod
227
183
  fun show() {
228
184
  // Do nothing on Android side
@@ -6,7 +6,7 @@ import subprocess
6
6
 
7
7
  # Regex to validate version numbers
8
8
  PROD_VERSION_RE = re.compile(r"^\d+\.\d+\.\d+$")
9
- PRERELEASE_VERSION_RE = re.compile(r"^\d+\.\d+\.\d+-(alpha|beta|rc)\.\d{2}$")
9
+ PRERELEASE_VERSION_RE = re.compile(r"^\d+\.\d+\.\d+-(alpha|beta|rc)\.\d+$")
10
10
 
11
11
  early_access = str(os.getenv("EARLY_ACCESS"))
12
12
 
package/ios/Nami.m CHANGED
@@ -50,7 +50,7 @@ RCT_EXPORT_METHOD(configure: (NSDictionary *)configDict completion: (RCTResponse
50
50
  }
51
51
 
52
52
  // Start commands with header iformation for Nami to let them know this is a React client.
53
- NSMutableArray *namiCommandStrings = [NSMutableArray arrayWithArray:@[@"extendedClientInfo:react-native:3.1.14"]];
53
+ NSMutableArray *namiCommandStrings = [NSMutableArray arrayWithArray:@[@"extendedClientInfo:react-native:3.1.18-beta.1"]];
54
54
 
55
55
  // Add additional namiCommands app may have sent in.
56
56
  NSObject *appCommandStrings = configDict[@"namiCommands"];
@@ -42,35 +42,24 @@ class RNNamiPaywallManager: RCTEventEmitter {
42
42
  }
43
43
 
44
44
  let namiSku = NamiSKU(namiId: namiId, storeId: storeId, skuType: namiSkuType)
45
+ let priceString = dict["price"] as? String ?? "0"
45
46
 
46
47
  do {
47
- let dateFormatter = DateFormatter()
48
- dateFormatter.locale = .init(identifier: "en_US_POSIX")
49
- dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ"
50
-
51
- if
52
- let transactionID = dict["transactionID"] as? String,
53
- let originalTransactionID = dict["originalTransactionID"] as? String,
54
- let priceDecimal = Decimal(string: dict["price"] as! String),
55
- let currencyCode = dict["currencyCode"] as? String,
56
- let localeString = dict["locale"] as? String
48
+ if let transactionID = dict["transactionID"] as? String,
49
+ let originalTransactionID = dict["originalTransactionID"] as? String,
50
+ let priceDecimal = Decimal(string: priceString),
51
+ let currencyCode = dict["currencyCode"] as? String
57
52
  {
58
- let expiresDate = Date(timeIntervalSince1970: dict["purchaseDate"] as! Double? ?? 0)
59
- let originalPurchaseDate = Date(timeIntervalSince1970: dict["originalPurchaseDate"] as! Double)
60
- let purchaseDate = Date(timeIntervalSince1970: dict["purchaseDate"] as! Double)
61
- let locale = Locale(identifier: localeString)
62
53
  let purchaseSuccess = NamiPurchaseSuccess(
63
54
  product: namiSku,
64
55
  transactionID: transactionID,
65
56
  originalTransactionID: originalTransactionID,
66
- originalPurchaseDate: originalPurchaseDate,
67
- purchaseDate: purchaseDate,
68
- expiresDate: expiresDate,
69
57
  price: priceDecimal,
70
- currencyCode: currencyCode,
71
- locale: locale
58
+ currencyCode: currencyCode
72
59
  )
73
60
  NamiPaywallManager.buySkuComplete(purchaseSuccess: purchaseSuccess)
61
+ } else {
62
+ print("RNNamiPaywallManager - buySkuComplete payload error \(dict)")
74
63
  }
75
64
  } catch {
76
65
  print("RNNamiPaywallManager - buySkuComplete error - decoding JSON: \(error)")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nami-sdk",
3
- "version": "3.1.14",
3
+ "version": "3.1.18-beta.1",
4
4
  "description": "React Native Module for Nami - Easy subscriptions & in-app purchases, with powerful built-in paywalls and A/B testing.",
5
5
  "main": "index.ts",
6
6
  "types": "index.d.ts",
@@ -20,7 +20,7 @@ Pod::Spec.new do |s|
20
20
  s.source_files = "ios/**/*.{h,m,swift}"
21
21
  s.requires_arc = true
22
22
 
23
- s.dependency 'Nami', '3.1.15'
23
+ s.dependency 'Nami', '3.1.18-beta.01'
24
24
  s.dependency 'React'
25
25
 
26
26
  end
@@ -32,28 +32,18 @@ export type NamiPurchaseSuccessApple = {
32
32
  product: NamiSKU;
33
33
  transactionID: string;
34
34
  originalTransactionID: string;
35
- originalPurchaseDate: number;
36
- purchaseDate: number;
37
- expiresDate?: number;
38
35
  price: string;
39
36
  currencyCode: string;
40
- locale: string;
41
37
  };
42
38
 
43
39
  export type NamiPurchaseSuccessGooglePlay = {
44
40
  product: NamiSKU;
45
41
  orderId: string;
46
- purchaseDate: number;
47
- expiresDate?: number;
48
42
  purchaseToken: string;
49
- purchaseSource: 'CAMPAIGN' | 'MARKETPLACE' | 'UNKNOWN';
50
43
  };
51
44
 
52
45
  export type NamiPurchaseSuccessAmazon = {
53
46
  product: NamiSKU;
54
- purchaseDate: number;
55
- expiresDate?: number;
56
- purchaseSource: 'CAMPAIGN' | 'MARKETPLACE' | 'UNKNOWN';
57
47
  receiptId: string;
58
48
  localizedPrice: string;
59
49
  userId: string;
package/src/types.ts CHANGED
@@ -173,6 +173,10 @@ export enum LaunchCampaignError {
173
173
  CAMPAIGN_DATA_NOT_FOUND = 2,
174
174
  PAYWALL_ALREADY_DISPLAYED = 3,
175
175
  SDK_NOT_INITIALIZED = 4,
176
+ PAYWALL_COULD_NOT_DISPLAY = 5,
177
+ URL_CAMPAIGN_NOT_FOUND = 6,
178
+ PRODUCT_DATA_NOT_FOUND = 7,
179
+ PRODUCT_GROUPS_NOT_FOUND = 8,
176
180
  }
177
181
 
178
182
  export enum LaunchCampaignResultAction {
@@ -228,33 +232,23 @@ export type NamiEntitlement = {
228
232
  relatedSkus: NamiSKU[];
229
233
  };
230
234
 
231
- // NamiPayWallManager
235
+ // NamiPaywallManager
232
236
  export type NamiPurchaseSuccessApple = {
233
237
  product: NamiSKU;
234
238
  transactionID: string;
235
239
  originalTransactionID: string;
236
- originalPurchaseDate: number;
237
- purchaseDate: number;
238
- expiresDate?: number;
239
240
  price: string;
240
241
  currencyCode: string;
241
- locale: string;
242
242
  };
243
243
 
244
244
  export type NamiPurchaseSuccessGooglePlay = {
245
245
  product: NamiSKU;
246
246
  orderId: string;
247
- purchaseDate: number;
248
- expiresDate?: number;
249
247
  purchaseToken: string;
250
- purchaseSource: 'CAMPAIGN' | 'MARKETPLACE' | 'UNKNOWN';
251
248
  };
252
249
 
253
250
  export type NamiPurchaseSuccessAmazon = {
254
251
  product: NamiSKU;
255
- purchaseDate: number;
256
- expiresDate?: number;
257
- purchaseSource: 'CAMPAIGN' | 'MARKETPLACE' | 'UNKNOWN';
258
252
  receiptId: string;
259
253
  localizedPrice: string;
260
254
  userId: string;