react-native-nami-sdk 3.3.0 → 3.3.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.
Files changed (38) hide show
  1. package/android/build.gradle +2 -2
  2. package/android/src/main/java/com/namiml/reactnative/NamiBridgeModule.kt +6 -0
  3. package/android/src/main/java/com/namiml/reactnative/NamiCampaignManagerBridge.kt +1 -2
  4. package/android/src/main/java/com/namiml/reactnative/NamiFlowManagerBridge.kt +12 -0
  5. package/android/src/main/java/com/namiml/reactnative/NamiPaywallManagerBridgeModule.kt +2 -1
  6. package/android/src/main/java/com/namiml/reactnative/NamiPurchaseManagerBridge.kt +0 -7
  7. package/android/src/main/java/com/namiml/reactnative/NamiUtil.kt +35 -0
  8. package/dist/specs/NativeNami.d.ts +1 -0
  9. package/dist/specs/NativeNamiFlowManager.d.ts +2 -0
  10. package/dist/specs/NativeNamiPaywallManager.d.ts +1 -0
  11. package/dist/specs/NativeNamiPurchaseManager.d.ts +0 -1
  12. package/dist/src/Nami.d.ts +1 -0
  13. package/dist/src/NamiFlowManager.d.ts +2 -0
  14. package/dist/src/NamiPurchaseManager.d.ts +0 -1
  15. package/dist/src/types.d.ts +1 -0
  16. package/dist/src/version.d.ts +1 -1
  17. package/ios/Nami.m +2 -0
  18. package/ios/Nami.swift +9 -5
  19. package/ios/NamiCampaignManagerBridge.swift +3 -5
  20. package/ios/NamiCustomerManager.swift +3 -5
  21. package/ios/NamiEntitlementManagerBridge.swift +3 -4
  22. package/ios/NamiFlowManagerBridge.m +2 -0
  23. package/ios/NamiFlowManagerBridge.swift +17 -0
  24. package/ios/NamiPaywallManagerBridge.swift +8 -0
  25. package/ios/NamiPurchaseManagerBridge.m +0 -2
  26. package/ios/NamiPurchaseManagerBridge.swift +3 -9
  27. package/package.json +1 -1
  28. package/react-native-nami-sdk.podspec +7 -1
  29. package/specs/NativeNami.ts +1 -0
  30. package/specs/NativeNamiFlowManager.ts +3 -2
  31. package/specs/NativeNamiPaywallManager.ts +1 -0
  32. package/specs/NativeNamiPurchaseManager.ts +0 -1
  33. package/src/Nami.ts +3 -0
  34. package/src/NamiFlowManager.ts +8 -0
  35. package/src/NamiPaywallManager.ts +3 -3
  36. package/src/NamiPurchaseManager.ts +0 -3
  37. package/src/types.ts +1 -0
  38. package/src/version.ts +1 -1
@@ -85,8 +85,8 @@ dependencies {
85
85
  implementation fileTree(dir: 'libs', include: ['*.jar'])
86
86
  implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
87
87
 
88
- playImplementation "com.namiml:sdk-android:3.3.0"
89
- amazonImplementation "com.namiml:sdk-amazon:3.3.0"
88
+ playImplementation "com.namiml:sdk-android:3.3.1"
89
+ amazonImplementation "com.namiml:sdk-amazon:3.3.1"
90
90
 
91
91
  implementation "com.facebook.react:react-native:+" // From node_modules
92
92
  coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.0.4"
@@ -34,6 +34,12 @@ class NamiBridgeModule internal constructor(
34
34
  promise.resolve(Nami.isInitialized())
35
35
  }
36
36
 
37
+ @ReactMethod
38
+ fun sdkVersion(promise: Promise) {
39
+ val version = Nami.sdkVersion()
40
+ promise.resolve(version)
41
+ }
42
+
37
43
  @ReactMethod
38
44
  fun configure(configDict: ReadableMap, promise: Promise) {
39
45
  logNewArchitectureStatus()
@@ -158,8 +158,7 @@ class NamiCampaignManagerBridgeModule internal constructor(
158
158
  paywallEvent: NamiPaywallEvent,
159
159
  actionCallback: Callback,
160
160
  ) {
161
- val actionString = paywallEvent.action.toString()
162
-
161
+ val actionString = paywallEvent.action.toRNActionString()
163
162
  val purchasesArray = createPurchaseArray(paywallEvent.purchases)
164
163
 
165
164
  val resultMap =
@@ -55,6 +55,18 @@ class NamiFlowManagerBridgeModule internal constructor(
55
55
  }, 100L)
56
56
  }
57
57
 
58
+ @ReactMethod
59
+ fun finish() {
60
+ Handler(Looper.getMainLooper()).postDelayed({
61
+ NamiFlowManager.finish()
62
+ }, 100L)
63
+ }
64
+
65
+ @ReactMethod
66
+ fun isFlowOpen(promise: Promise) {
67
+ promise.resolve(NamiFlowManager.isFlowOpen())
68
+ }
69
+
58
70
  private fun sendEvent(eventName: String, params: WritableMap?) {
59
71
  reactApplicationContext
60
72
  .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
@@ -24,11 +24,12 @@ class NamiPaywallManagerBridgeModule internal constructor(
24
24
  private var latestPaywallActivity: Activity? = null
25
25
 
26
26
  @ReactMethod
27
- fun buySkuComplete(dict: ReadableMap, storeType: String) {
27
+ fun buySkuComplete(dict: ReadableMap) {
28
28
  val product = dict.getMap("product")
29
29
  val productId = product?.getString("id")
30
30
  val skuRefId = product?.getString("skuId")
31
31
  val typeString = product?.getString("type")
32
+ val storeType = dict.getString("storeType") ?: "GooglePlay"
32
33
  var purchaseSuccess: NamiPurchaseSuccess? = null
33
34
 
34
35
  if (productId != null && skuRefId != null) {
@@ -42,13 +42,6 @@ class NamiPurchaseManagerBridgeModule internal constructor(
42
42
  promise.resolve(isPurchased)
43
43
  }
44
44
 
45
- @ReactMethod
46
- fun consumePurchasedSku(skuRefId: String) {
47
- reactContext.runOnUiQueueThread {
48
- NamiPurchaseManager.consumePurchasedSKU(skuRefId)
49
- }
50
- }
51
-
52
45
  @ReactMethod
53
46
  fun anySkuPurchased(skuIDs: ReadableArray, promise: Promise) {
54
47
  reactContext.runOnUiQueueThread {
@@ -15,6 +15,41 @@ import java.text.SimpleDateFormat
15
15
  import java.util.Date
16
16
  import java.util.Locale
17
17
  import java.util.TimeZone
18
+ import com.namiml.paywall.model.NamiPaywallAction
19
+
20
+ fun NamiPaywallAction.toRNActionString(): String {
21
+ return when (this) {
22
+ NamiPaywallAction.NAMI_BUY_SKU -> "BUY_SKU"
23
+ NamiPaywallAction.NAMI_SELECT_SKU -> "SELECT_SKU"
24
+ NamiPaywallAction.NAMI_RESTORE_PURCHASES -> "RESTORE_PURCHASES"
25
+ NamiPaywallAction.NAMI_SHOW_PAYWALL -> "SHOW_PAYWALL"
26
+ NamiPaywallAction.NAMI_CLOSE_PAYWALL -> "CLOSE_PAYWALL"
27
+ NamiPaywallAction.NAMI_SIGN_IN -> "SIGN_IN"
28
+ NamiPaywallAction.NAMI_PURCHASE_SELECTED_SKU -> "PURCHASE_SELECTED_SKU"
29
+ NamiPaywallAction.NAMI_PURCHASE_SUCCESS -> "PURCHASE_SUCCESS"
30
+ NamiPaywallAction.NAMI_PURCHASE_FAILED -> "PURCHASE_FAILED"
31
+ NamiPaywallAction.NAMI_PURCHASE_CANCELLED -> "PURCHASE_CANCELLED"
32
+ NamiPaywallAction.NAMI_PURCHASE_PENDING -> "PURCHASE_PENDING"
33
+ NamiPaywallAction.NAMI_PURCHASE_UNKNOWN -> "PURCHASE_UNKNOWN"
34
+ NamiPaywallAction.NAMI_DEEP_LINK -> "DEEPLINK"
35
+ NamiPaywallAction.NAMI_TOGGLE_CHANGE -> "TOGGLE_CHANGE"
36
+ NamiPaywallAction.NAMI_PAGE_CHANGE -> "PAGE_CHANGE"
37
+ NamiPaywallAction.NAMI_SLIDE_CHANGE -> "SLIDE_CHANGE"
38
+ NamiPaywallAction.NAMI_COLLAPSIBLE_DRAWER_OPEN -> "COLLAPSIBLE_DRAWER_OPEN"
39
+ NamiPaywallAction.NAMI_COLLAPSIBLE_DRAWER_CLOSE -> "COLLAPSIBLE_DRAWER_CLOSE"
40
+ NamiPaywallAction.NAMI_VIDEO_STARTED -> "VIDEO_STARTED"
41
+ NamiPaywallAction.NAMI_VIDEO_PAUSED -> "VIDEO_PAUSED"
42
+ NamiPaywallAction.NAMI_VIDEO_RESUMED -> "VIDEO_RESUMED"
43
+ NamiPaywallAction.NAMI_VIDEO_ENDED -> "VIDEO_ENDED"
44
+ NamiPaywallAction.NAMI_VIDEO_CHANGED -> "VIDEO_CHANGED"
45
+ NamiPaywallAction.NAMI_VIDEO_MUTED -> "VIDEO_MUTED"
46
+ NamiPaywallAction.NAMI_VIDEO_UNMUTED -> "VIDEO_UNMUTED"
47
+ else -> {
48
+ Log.w("NamiUtil", "Unhandled NamiPaywallAction: $this. This might indicate a new enum value added in the SDK.")
49
+ "UNKNOWN"
50
+ }
51
+ }
52
+ }
18
53
 
19
54
  fun List<*>.toWritableArray(): WritableArray {
20
55
  val convertedArray = Arguments.createArray()
@@ -10,6 +10,7 @@ export interface Spec extends TurboModule {
10
10
  success: boolean;
11
11
  }>;
12
12
  sdkConfigured(): Promise<boolean>;
13
+ sdkVersion(): Promise<string>;
13
14
  }
14
15
  declare const _default: Spec;
15
16
  export default _default;
@@ -1,5 +1,7 @@
1
1
  import type { TurboModule } from 'react-native';
2
2
  export interface Spec extends TurboModule {
3
+ finish(): void;
4
+ isFlowOpen(): Promise<boolean>;
3
5
  registerStepHandoff(): void;
4
6
  resume(): void;
5
7
  registerEventHandler(): void;
@@ -17,6 +17,7 @@ export interface Spec extends TurboModule {
17
17
  marketplace?: string;
18
18
  price?: string;
19
19
  currencyCode?: string;
20
+ storeType?: string;
20
21
  }): void;
21
22
  buySkuCompleteApple(purchase: {
22
23
  product: {
@@ -18,7 +18,6 @@ export interface Spec extends TurboModule {
18
18
  }>>;
19
19
  skuPurchased(skuId: string): Promise<boolean>;
20
20
  anySkuPurchased(skuIds: string[]): Promise<boolean>;
21
- consumePurchasedSku(skuId: string): void;
22
21
  presentCodeRedemptionSheet(): void;
23
22
  restorePurchases(): void;
24
23
  registerPurchasesChangedHandler(): void;
@@ -2,4 +2,5 @@ import type { NamiConfiguration } from './types';
2
2
  export declare const Nami: {
3
3
  configure: (config: NamiConfiguration) => Promise<boolean>;
4
4
  sdkConfigured: () => Promise<boolean>;
5
+ sdkVersion: () => Promise<string>;
5
6
  };
@@ -8,4 +8,6 @@ export declare const NamiFlowManager: {
8
8
  registerStepHandoff: (callback: (handoffTag: string, handoffData?: Record<string, unknown>) => void) => (() => void);
9
9
  resume: () => void;
10
10
  registerEventHandler: (callback: (payload: Record<string, unknown>) => void) => (() => void);
11
+ finish: () => void;
12
+ isFlowOpen: () => Promise<boolean>;
11
13
  };
@@ -9,7 +9,6 @@ export declare const NamiPurchaseManager: {
9
9
  allPurchases: () => Promise<NamiPurchase[]>;
10
10
  skuPurchased: (skuId: string) => Promise<boolean>;
11
11
  anySkuPurchased: (skuIds: string[]) => Promise<boolean>;
12
- consumePurchasedSku: (skuId: string) => void;
13
12
  presentCodeRedemptionSheet: () => void;
14
13
  restorePurchases: () => void;
15
14
  registerPurchasesChangedHandler: (callback: (state: NamiPurchasesState, purchases: NamiPurchase[], error: string) => void) => (() => void);
@@ -123,6 +123,7 @@ export type NamiPurchaseDetails = {
123
123
  currencyCode?: string;
124
124
  userId?: string;
125
125
  marketplace?: string;
126
+ storeType?: string;
126
127
  };
127
128
  export type NamiPurchaseSuccessApple = {
128
129
  product: NamiSKU;
@@ -2,4 +2,4 @@
2
2
  * Auto-generated file. Do not edit manually.
3
3
  * React Native Nami SDK version.
4
4
  */
5
- export declare const NAMI_REACT_NATIVE_VERSION = "3.3.0";
5
+ export declare const NAMI_REACT_NATIVE_VERSION = "3.3.1";
package/ios/Nami.m CHANGED
@@ -15,6 +15,8 @@ RCT_EXTERN_METHOD(configure:(NSDictionary *)configDict
15
15
  RCT_EXTERN_METHOD(sdkConfigured:(RCTPromiseResolveBlock)resolve
16
16
  rejecter:(RCTPromiseRejectBlock)reject)
17
17
 
18
+ RCT_EXTERN_METHOD(sdkVersion:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
19
+
18
20
  + (BOOL)requiresMainQueueSetup {
19
21
  return NO;
20
22
  }
package/ios/Nami.swift CHANGED
@@ -8,11 +8,9 @@ import Foundation
8
8
  import NamiApple
9
9
  import React
10
10
 
11
- #if RCT_NEW_ARCH_ENABLED
12
- import React_RCTTurboModule
13
-
14
- extension RNNami: RCTTurboModule {}
15
- #endif
11
+ // #if RCT_NEW_ARCH_ENABLED
12
+ // extension RNNami: RCTTurboModule {}
13
+ // #endif
16
14
 
17
15
  @objc(RNNami)
18
16
  class RNNami: NSObject {
@@ -75,6 +73,12 @@ class RNNami: NSObject {
75
73
  resolve(Nami.sdkConfigured())
76
74
  }
77
75
 
76
+ @objc(sdkVersion:rejecter:)
77
+ func sdkVersion(resolve: @escaping RCTPromiseResolveBlock, reject _: @escaping RCTPromiseRejectBlock) {
78
+ let version = Nami.sdkVersion
79
+ resolve(version)
80
+ }
81
+
78
82
  func isNewArchitectureEnabled() -> Bool {
79
83
  #if RCT_NEW_ARCH_ENABLED
80
84
  return true
@@ -10,11 +10,9 @@ import NamiApple
10
10
  import os
11
11
  import React
12
12
 
13
- #if RCT_NEW_ARCH_ENABLED
14
- import React_RCTTurboModule
15
-
16
- extension RNNamiCampaignManager: RCTTurboModule {}
17
- #endif
13
+ // #if RCT_NEW_ARCH_ENABLED
14
+ // extension RNNamiCampaignManager: RCTTurboModule {}
15
+ // #endif
18
16
 
19
17
  @objc(RNNamiCampaignManager)
20
18
  class RNNamiCampaignManager: RCTEventEmitter {
@@ -9,11 +9,9 @@ import Foundation
9
9
  import NamiApple
10
10
  import React
11
11
 
12
- #if RCT_NEW_ARCH_ENABLED
13
- import React_RCTTurboModule
14
-
15
- extension RNNamiCustomerManager: RCTTurboModule {}
16
- #endif
12
+ // #if RCT_NEW_ARCH_ENABLED
13
+ // extension RNNamiCustomerManager: RCTTurboModule {}
14
+ // #endif
17
15
 
18
16
  @objc(RNNamiCustomerManager)
19
17
  class RNNamiCustomerManager: RCTEventEmitter {
@@ -9,10 +9,9 @@ import Foundation
9
9
  import NamiApple
10
10
  import React
11
11
 
12
- #if RCT_NEW_ARCH_ENABLED
13
- import React_RCTTurboModule
14
- extension RNNamiEntitlementManager: RCTTurboModule {}
15
- #endif
12
+ // #if RCT_NEW_ARCH_ENABLED
13
+ // extension RNNamiEntitlementManager: RCTTurboModule {}
14
+ // #endif
16
15
 
17
16
  @objc(RNNamiEntitlementManager)
18
17
  class RNNamiEntitlementManager: RCTEventEmitter {
@@ -12,6 +12,8 @@
12
12
  RCT_EXTERN_METHOD(registerStepHandoff)
13
13
  RCT_EXTERN_METHOD(registerEventHandler)
14
14
  RCT_EXTERN_METHOD(resume)
15
+ RCT_EXTERN_METHOD(finish)
16
+ RCT_EXTERN_METHOD(isFlowOpen:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
15
17
 
16
18
  + (BOOL)requiresMainQueueSetup {
17
19
  return NO;
@@ -9,6 +9,10 @@ import Foundation
9
9
  import NamiApple
10
10
  import React
11
11
 
12
+ // #if RCT_NEW_ARCH_ENABLED
13
+ // extension RNNamiFlowManager: RCTTurboModule {}
14
+ // #endif
15
+
12
16
  @objc(RNNamiFlowManager)
13
17
  class RNNamiFlowManager: RCTEventEmitter {
14
18
  public static var shared: RNNamiFlowManager?
@@ -54,4 +58,17 @@ class RNNamiFlowManager: RCTEventEmitter {
54
58
  NamiFlowManager.resume()
55
59
  }
56
60
  }
61
+
62
+ @objc func finish() {
63
+ DispatchQueue.main.async {
64
+ NamiFlowManager.finish()
65
+ }
66
+ }
67
+
68
+ @objc func isFlowOpen(_ resolve: @escaping RCTPromiseResolveBlock, rejecter _: @escaping RCTPromiseRejectBlock) {
69
+ DispatchQueue.main.async {
70
+ let isFlowOpen = NamiFlowManager.isFlowOpen()
71
+ resolve(isFlowOpen)
72
+ }
73
+ }
57
74
  }
@@ -9,6 +9,10 @@ import Foundation
9
9
  import NamiApple
10
10
  import React
11
11
 
12
+ // #if RCT_NEW_ARCH_ENABLED
13
+ // extension RNNamiPaywallManager: RCTTurboModule {}
14
+ // #endif
15
+
12
16
  @objc(RNNamiPaywallManager)
13
17
  class RNNamiPaywallManager: RCTEventEmitter {
14
18
  public static var shared: RNNamiPaywallManager?
@@ -44,6 +48,10 @@ class RNNamiPaywallManager: RCTEventEmitter {
44
48
  let namiSku = NamiSKU(namiId: namiId, storeId: storeId, skuType: namiSkuType)
45
49
  let priceString = dict["price"] as? String ?? "0"
46
50
 
51
+ if let store = dict["storeType"] as? String, store != "Apple" {
52
+ print("RNNamiPaywallManager - buySkuComplete called with the wrong store type \(dict)")
53
+ }
54
+
47
55
  do {
48
56
  if let transactionID = dict["transactionID"] as? String,
49
57
  let originalTransactionID = dict["originalTransactionID"] as? String,
@@ -21,8 +21,6 @@ RCT_EXTERN_METHOD(skuPurchased:(NSString *)skuId resolver:(RCTPromiseResolveBloc
21
21
 
22
22
  RCT_EXTERN_METHOD(anySkuPurchased:(NSArray*)skuIds resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
23
23
 
24
- RCT_EXTERN_METHOD(consumePurchasedSku:(NSString *)skuId)
25
-
26
24
  RCT_EXTERN_METHOD(registerPurchasesChangedHandler)
27
25
 
28
26
  RCT_EXTERN_METHOD(registerRestorePurchasesHandler)
@@ -9,10 +9,9 @@ import Foundation
9
9
  import NamiApple
10
10
  import React
11
11
 
12
- #if RCT_NEW_ARCH_ENABLED
13
- import React_RCTTurboModule
14
- extension RNNamiPurchaseManager: RCTTurboModule {}
15
- #endif
12
+ // #if RCT_NEW_ARCH_ENABLED
13
+ // extension RNNamiPurchaseManager: RCTTurboModule {}
14
+ // #endif
16
15
 
17
16
  @objc(RNNamiPurchaseManager)
18
17
  class RNNamiPurchaseManager: RCTEventEmitter {
@@ -120,11 +119,6 @@ class RNNamiPurchaseManager: RCTEventEmitter {
120
119
  resolve(false)
121
120
  }
122
121
 
123
- @objc(consumePurchasedSku:)
124
- func consumePurchasedSku(skuId: String) {
125
- NamiPurchaseManager.consumePurchasedSku(skuId: skuId)
126
- }
127
-
128
122
  @objc(registerPurchasesChangedHandler)
129
123
  func registerPurchasesChangedHandler() {
130
124
  NamiPurchaseManager.registerPurchasesChangedHandler { purchases, purchaseState, error in
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-nami-sdk",
3
- "version": "3.3.0",
3
+ "version": "3.3.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": "dist/index.d.ts",
@@ -21,7 +21,7 @@ Pod::Spec.new do |s|
21
21
  s.requires_arc = true
22
22
  s.swift_version = '5.0' # or your supported version
23
23
 
24
- s.dependency 'Nami', '3.3.0.1'
24
+ s.dependency 'Nami', '3.3.1.1'
25
25
  s.dependency 'React'
26
26
 
27
27
  s.pod_target_xcconfig = {
@@ -31,4 +31,10 @@ Pod::Spec.new do |s|
31
31
 
32
32
  install_modules_dependencies(s)
33
33
 
34
+ if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
35
+ s.pod_target_xcconfig = {
36
+ 'USE_HEADERMAP' => 'YES',
37
+ }
38
+ end
39
+
34
40
  end
@@ -11,6 +11,7 @@ export interface Spec extends TurboModule {
11
11
  }): Promise<{ success: boolean }>;
12
12
 
13
13
  sdkConfigured(): Promise<boolean>;
14
+ sdkVersion(): Promise<string>;
14
15
  }
15
16
 
16
17
  export default TurboModuleRegistry.getEnforcing<Spec>('RNNami');
@@ -2,10 +2,11 @@ import type { TurboModule } from 'react-native';
2
2
  import { TurboModuleRegistry } from 'react-native';
3
3
 
4
4
  export interface Spec extends TurboModule {
5
- registerStepHandoff(): void;
5
+ finish(): void;
6
+ isFlowOpen(): Promise<boolean>;
6
7
 
8
+ registerStepHandoff(): void;
7
9
  resume(): void;
8
-
9
10
  registerEventHandler(): void;
10
11
  }
11
12
 
@@ -20,6 +20,7 @@ export interface Spec extends TurboModule {
20
20
  marketplace?: string;
21
21
  price?: string;
22
22
  currencyCode?: string;
23
+ storeType?: string;
23
24
  }): void;
24
25
 
25
26
  // Backward compatibility methods
@@ -23,7 +23,6 @@ export interface Spec extends TurboModule {
23
23
 
24
24
  skuPurchased(skuId: string): Promise<boolean>;
25
25
  anySkuPurchased(skuIds: string[]): Promise<boolean>;
26
- consumePurchasedSku(skuId: string): void;
27
26
  presentCodeRedemptionSheet(): void;
28
27
  restorePurchases(): void;
29
28
  registerPurchasesChangedHandler(): void;
package/src/Nami.ts CHANGED
@@ -31,4 +31,7 @@ export const Nami = {
31
31
  sdkConfigured: async (): Promise<boolean> => {
32
32
  return await RNNami.sdkConfigured?.();
33
33
  },
34
+ sdkVersion: async (): Promise<string> => {
35
+ return await RNNami.sdkVersion();
36
+ },
34
37
  };
@@ -53,4 +53,12 @@ export const NamiFlowManager = {
53
53
  RNNamiFlowManager.registerEventHandler?.();
54
54
  return () => sub.remove();
55
55
  },
56
+
57
+ finish: (): void => {
58
+ RNNamiFlowManager.finish();
59
+ },
60
+
61
+ isFlowOpen: async (): Promise<boolean> => {
62
+ return RNNamiFlowManager.isFlowOpen();
63
+ },
56
64
  };
@@ -35,15 +35,15 @@ export const NamiPaywallManager = {
35
35
 
36
36
  // Compatibility shims
37
37
  buySkuCompleteApple: (purchase: NamiPurchaseSuccessApple): void => {
38
- RNNamiPaywallManager.buySkuCompleteApple(purchase);
38
+ RNNamiPaywallManager.buySkuComplete(purchase);
39
39
  },
40
40
 
41
41
  buySkuCompleteAmazon: (purchase: NamiPurchaseSuccessAmazon): void => {
42
- RNNamiPaywallManager.buySkuCompleteAmazon(purchase);
42
+ RNNamiPaywallManager.buySkuComplete(purchase);
43
43
  },
44
44
 
45
45
  buySkuCompleteGooglePlay: (purchase: NamiPurchaseSuccessGooglePlay): void => {
46
- RNNamiPaywallManager.buySkuCompleteGooglePlay(purchase);
46
+ RNNamiPaywallManager.buySkuComplete(purchase);
47
47
  },
48
48
 
49
49
  registerBuySkuHandler: (callback: (sku: NamiSKU) => void): (() => void) => {
@@ -47,9 +47,6 @@ export const NamiPurchaseManager = {
47
47
  anySkuPurchased: async (skuIds: string[]): Promise<boolean> =>
48
48
  await RNNamiPurchaseManager.anySkuPurchased(skuIds),
49
49
 
50
- consumePurchasedSku: (skuId: string): void =>
51
- RNNamiPurchaseManager.consumePurchasedSku(skuId),
52
-
53
50
  presentCodeRedemptionSheet: (): void =>
54
51
  RNNamiPurchaseManager.presentCodeRedemptionSheet(),
55
52
 
package/src/types.ts CHANGED
@@ -255,6 +255,7 @@ export type NamiPurchaseDetails = {
255
255
  currencyCode?: string;
256
256
  userId?: string;
257
257
  marketplace?: string;
258
+ storeType?: string; // 'Apple', 'GooglePlay', 'Amazon'
258
259
  };
259
260
 
260
261
  export type NamiPurchaseSuccessApple = {
package/src/version.ts CHANGED
@@ -2,4 +2,4 @@
2
2
  * Auto-generated file. Do not edit manually.
3
3
  * React Native Nami SDK version.
4
4
  */
5
- export const NAMI_REACT_NATIVE_VERSION = '3.3.0';
5
+ export const NAMI_REACT_NATIVE_VERSION = '3.3.1';