react-native-pfm-sdk-react-native 0.1.0 → 0.1.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.
@@ -4,10 +4,12 @@ import android.content.Intent
4
4
  import android.util.Log
5
5
  import com.facebook.react.bridge.Promise
6
6
  import com.facebook.react.bridge.ReactApplicationContext
7
+ import com.facebook.react.bridge.ReactMethod
7
8
  import com.facebook.react.module.annotations.ReactModule
8
9
  import com.facebook.react.modules.core.DeviceEventManagerModule
9
- import io.lunedata.lunesdk.library.classes.RefreshTokenCallback // 🚀 Import Refresher
10
+ import io.lunedata.lunesdk.library.classes.RefreshTokenCallback
10
11
  import java.util.concurrent.CountDownLatch
12
+ import java.util.concurrent.TimeUnit
11
13
 
12
14
  @ReactModule(name = PfmSdkReactNativeModule.NAME)
13
15
  class PfmSdkReactNativeModule(private val reactContext: ReactApplicationContext) :
@@ -18,32 +20,50 @@ class PfmSdkReactNativeModule(private val reactContext: ReactApplicationContext)
18
20
  var savedBaseUrl: String = ""
19
21
  var savedToken: String = ""
20
22
 
21
- // 🚦 Latch logic for Token Refresh
23
+ @Volatile var isRefreshing = false
22
24
  var tokenLatch: CountDownLatch? = null
23
25
  var newTokenResponse: String? = null
24
26
 
27
+ // Use a weak-ish reference style by updating this on every init
28
+ private var currentInstance: PfmSdkReactNativeModule? = null
29
+
25
30
  val tokenRefresher = object : RefreshTokenCallback {
26
31
  override fun refreshToken(): String? {
27
- tokenLatch = CountDownLatch(1)
28
- newTokenResponse = null
29
-
30
- // 📢 Notify React Native that we need a token
31
- // This maps to the 'onRefreshToken' listener in JS
32
- instance?.sendEvent("onRefreshToken", null)
32
+ synchronized(this) {
33
+ if (!isRefreshing) {
34
+ isRefreshing = true
35
+ tokenLatch = CountDownLatch(1)
36
+ newTokenResponse = null
37
+
38
+ Log.d("LuneSDK", "🚀 Android: Requesting token refresh from JS...")
39
+ // We must ensure the event is sent; if instance is null, JS isn't ready
40
+ currentInstance?.sendEvent("onLuneTokenRefresh", null)
41
+ } else {
42
+ Log.d("LuneSDK", "⏳ Android: Already refreshing, thread waiting...")
43
+ }
44
+ }
33
45
 
34
46
  try {
35
- tokenLatch?.await() // 🚦 Pause thread until JS calls submitNewToken
47
+ // Wait for JS to call provideRefreshedToken
48
+ val completed = tokenLatch?.await(20, TimeUnit.SECONDS)
49
+ if (completed == false) {
50
+ Log.e("LuneSDK", "❌ Android: JS Refresh Timeout (20s)")
51
+ }
36
52
  } catch (e: InterruptedException) {
37
- Log.e("LuneSDK", "Token wait interrupted", e)
53
+ Log.e("LuneSDK", "⚠️ Android: Latch Interrupted", e)
54
+ } finally {
55
+ isRefreshing = false
38
56
  }
57
+
39
58
  return newTokenResponse
40
59
  }
41
60
  }
42
-
43
- private var instance: PfmSdkReactNativeModule? = null
44
61
  }
45
62
 
46
- init { instance = this }
63
+ init {
64
+ // Update the static instance whenever the module is re-initialized by RN
65
+ currentInstance = this
66
+ }
47
67
 
48
68
  override fun getName() = NAME
49
69
 
@@ -53,23 +73,27 @@ class PfmSdkReactNativeModule(private val reactContext: ReactApplicationContext)
53
73
  promise.resolve(null)
54
74
  }
55
75
 
56
- // 🚀 Call this from JS when you have the new token
57
76
  override fun registerRefreshTokenCallback(promise: Promise) {
58
- // In TurboModules, we use this to signify JS is ready to listen
59
77
  promise.resolve(null)
60
78
  }
61
79
 
62
- // Use this to pass the token back from JS
63
- fun submitNewToken(token: String?) {
80
+ @ReactMethod
81
+ override fun provideRefreshedToken(token: String?, promise: Promise) {
82
+ Log.d("LuneSDK", "📥 Android: Received new token from JS")
64
83
  newTokenResponse = token
65
- if (token != null) savedToken = token
66
- tokenLatch?.countDown() // 🟢 Resume the SDK thread
84
+ if (!token.isNullOrEmpty()) {
85
+ savedToken = token
86
+ }
87
+
88
+ isRefreshing = false
89
+ tokenLatch?.countDown() // 🟢 Resume the SDK threads!
90
+ promise.resolve(null)
67
91
  }
68
92
 
69
93
  override fun showLuneView(viewIdentifier: String, promise: Promise) {
70
94
  val currentActivity = reactContext.currentActivity
71
95
  if (currentActivity == null) {
72
- promise.reject("ERROR", "No Activity")
96
+ promise.reject("ERROR", "No Activity found")
73
97
  return
74
98
  }
75
99
 
@@ -83,12 +107,16 @@ class PfmSdkReactNativeModule(private val reactContext: ReactApplicationContext)
83
107
  }
84
108
 
85
109
  private fun sendEvent(eventName: String, params: String?) {
86
- reactContext
87
- .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
88
- .emit(eventName, params)
110
+ // React Native needs to send events on the JS thread or UI thread
111
+ try {
112
+ reactContext
113
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
114
+ .emit(eventName, params)
115
+ } catch (e: Exception) {
116
+ Log.e("LuneSDK", "Failed to emit event to JS: ${e.message}")
117
+ }
89
118
  }
90
119
 
91
- // Boilerplate for other methods...
92
120
  override fun optInForEventListener(promise: Promise) { promise.resolve(null) }
93
121
  override fun optInForErrorLogger(promise: Promise) { promise.resolve(null) }
94
122
  override fun optInForErrorNotifier(promise: Promise) { promise.resolve(null) }
@@ -41,7 +41,7 @@ RCT_EXPORT_METHOD(initializeSdk:(NSString *)baseUrl
41
41
  [sharedImpl initializeSdk:baseUrl accessToken:accessToken resolve:resolve reject:reject];
42
42
  }
43
43
 
44
- // 3. NEW: Present the Modal View
44
+ // 3. Present the Modal View
45
45
  RCT_EXPORT_METHOD(showLuneView:(NSString *)viewIdentifier
46
46
  resolve:(RCTPromiseResolveBlock)resolve
47
47
  reject:(RCTPromiseRejectBlock)reject)
@@ -74,13 +74,27 @@ RCT_EXPORT_METHOD(registerRefreshTokenCallback:(RCTPromiseResolveBlock)resolve r
74
74
  [[PfmSdkReactNativeImpl shared] registerRefreshTokenCallback:resolve reject:reject];
75
75
  }
76
76
 
77
+ // Receive the refreshed token from JavaScript and hand it to Swift
78
+ RCT_EXPORT_METHOD(provideRefreshedToken:(NSString *)token
79
+ resolve:(RCTPromiseResolveBlock)resolve
80
+ reject:(RCTPromiseRejectBlock)reject)
81
+ {
82
+ [[PfmSdkReactNativeImpl shared] provideRefreshedToken:token resolve:resolve reject:reject];
83
+ }
84
+
77
85
  RCT_EXPORT_METHOD(destroySdk:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject)
78
86
  {
79
87
  [[PfmSdkReactNativeImpl shared] destroySdk:resolve reject:reject];
80
88
  }
81
89
 
82
- RCT_EXPORT_METHOD(addListener:(NSString *)eventName) {}
83
- RCT_EXPORT_METHOD(removeListeners:(double)count) {}
90
+ // 🚀 THE FIX: Let the superclass (RCTEventEmitter) actually register the listeners!
91
+ - (void)addListener:(NSString *)eventName {
92
+ [super addListener:eventName];
93
+ }
94
+
95
+ - (void)removeListeners:(double)count {
96
+ [super removeListeners:count];
97
+ }
84
98
 
85
99
  + (BOOL)requiresMainQueueSetup
86
100
  {
@@ -11,7 +11,7 @@ public class PfmSdkReactNativeImpl: NSObject {
11
11
  @objc public var sendEvent: ((String, Any?) -> Void)?
12
12
 
13
13
  var sdkManager: LuneSDKManager?
14
-
14
+ private var tokenRefreshContinuation: CheckedContinuation<String?, Never>?
15
15
  // Cache these to easily pass into the SwiftUI View later
16
16
  var savedBaseUrl: String = ""
17
17
  var savedToken: String = ""
@@ -111,12 +111,30 @@ public func initializeSdk(baseUrl: String, accessToken: String, resolve: @escapi
111
111
  resolve(nil)
112
112
  }
113
113
 
114
+ // 2. Replace your existing register function with this one
114
115
  @objc(registerRefreshTokenCallback:reject:)
115
116
  public func registerRefreshTokenCallback(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
116
117
  self.sdkManager?.setupRefreshCallback {
117
- self.sendEvent?("onLuneTokenRefresh", nil)
118
- return nil
118
+ // Pause Swift and wait for JS
119
+ return await withCheckedContinuation { continuation in
120
+ self.tokenRefreshContinuation = continuation
121
+ self.sendEvent?("onLuneTokenRefresh", nil)
122
+ }
123
+ }
124
+ resolve(nil)
125
+ }
126
+
127
+ // 3. Add this brand new function so JS can send the token back
128
+ @objc(provideRefreshedToken:resolve:reject:)
129
+ public func provideRefreshedToken(token: String?, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
130
+ if let newToken = token {
131
+ self.savedToken = newToken
119
132
  }
133
+
134
+ // Un-pause Swift and hand it the token
135
+ self.tokenRefreshContinuation?.resume(returning: token)
136
+ self.tokenRefreshContinuation = nil
137
+
120
138
  resolve(nil)
121
139
  }
122
140
 
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","LuneViewType","getEnforcing"],"sourceRoot":"../../src","sources":["NativePfmSdkReactNative.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;AACA,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;;AAcxB;;AAkBA,eAAeD,mBAAmB,CAACE,YAAY,CAAO,mBAAmB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","LuneViewType","getEnforcing"],"sourceRoot":"../../src","sources":["NativePfmSdkReactNative.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;;AAElD;AACA,WAAYC,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;;AAcxB;;AAqBA,eAAeD,mBAAmB,CAACE,YAAY,CAAO,mBAAmB,CAAC","ignoreList":[]}
@@ -28,6 +28,11 @@ export function optInForSuccessNotifier() {
28
28
  export function registerRefreshTokenCallback() {
29
29
  return PfmSdkReactNative.registerRefreshTokenCallback();
30
30
  }
31
+
32
+ // 🚀 NEW: The bridge to send the token back to Swift
33
+ export function provideRefreshedToken(token) {
34
+ return PfmSdkReactNative.provideRefreshedToken(token);
35
+ }
31
36
  export function destroySdk() {
32
37
  return PfmSdkReactNative.destroySdk();
33
38
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","PfmSdkReactNative","LuneViewType","emitter","initializeSdk","baseUrl","accessToken","optInForEventListener","optInForErrorLogger","optInForErrorNotifier","optInForSuccessNotifier","registerRefreshTokenCallback","destroySdk","showLuneView","viewIdentifier","showCashflowComponent","showBudgetComponent","showExpenseComponent","showBrandTrendComponent","console","warn","addLuneEventListener","callback","addListener","event","addLuneErrorListener","error","String","addLuneSuccessListener","message","addLuneTokenRefreshListener"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,cAAc;AAEjD,OAAOC,iBAAiB,MAAM,8BAA2B;;AAEzD;AACA,SAASC,YAAY,QAAQ,8BAA2B;;AAExD;AACA,MAAMC,OAAO,GAAG,IAAIH,kBAAkB,CAACC,iBAAwB,CAAC;;AAEhE;AACA,OAAO,SAASG,aAAaA,CAC3BC,OAAe,EACfC,WAAmB,EACJ;EACf,OAAOL,iBAAiB,CAACG,aAAa,CAACC,OAAO,EAAEC,WAAW,CAAC;AAC9D;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAkB;EACrD,OAAON,iBAAiB,CAACM,qBAAqB,CAAC,CAAC;AAClD;AAEA,OAAO,SAASC,mBAAmBA,CAAA,EAAkB;EACnD,OAAOP,iBAAiB,CAACO,mBAAmB,CAAC,CAAC;AAChD;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAkB;EACrD,OAAOR,iBAAiB,CAACQ,qBAAqB,CAAC,CAAC;AAClD;AAEA,OAAO,SAASC,uBAAuBA,CAAA,EAAkB;EACvD,OAAOT,iBAAiB,CAACS,uBAAuB,CAAC,CAAC;AACpD;AAEA,OAAO,SAASC,4BAA4BA,CAAA,EAAkB;EAC5D,OAAOV,iBAAiB,CAACU,4BAA4B,CAAC,CAAC;AACzD;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAkB;EAC1C,OAAOX,iBAAiB,CAACW,UAAU,CAAC,CAAC;AACvC;;AAEA;AACA,OAAO,SAASC,YAAYA,CAACC,cAAsB,EAAiB;EAClE,OAAOb,iBAAiB,CAACY,YAAY,CAACC,cAAc,CAAC;AACvD;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAkB;EACrD,OAAOF,YAAY,CAAC,UAAU,CAAC;AACjC;AAEA,OAAO,SAASG,mBAAmBA,CAAA,EAAkB;EACnD,OAAOH,YAAY,CAAC,QAAQ,CAAC;AAC/B;AAEA,OAAO,SAASI,oBAAoBA,CAAA,EAAkB;EACpD,OAAOJ,YAAY,CAAC,OAAO,CAAC;AAC9B;AAEA,OAAO,SAASK,uBAAuBA,CAAA,EAAkB;EACvDC,OAAO,CAACC,IAAI,CAAC,0DAA0D,CAAC;EACxE,OAAOP,YAAY,CAAC,OAAO,CAAC;AAC9B;;AAEA;AACA,OAAO,SAASQ,oBAAoBA,CAClCC,QAA8B,EACX;EACnB,OAAOnB,OAAO,CAACoB,WAAW,CAAC,aAAa,EAAGC,KAAU,IAAKF,QAAQ,CAACE,KAAK,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASC,oBAAoBA,CAClCH,QAAiC,EACd;EACnB,OAAOnB,OAAO,CAACoB,WAAW,CAAC,aAAa,EAAGG,KAAU,IACnDJ,QAAQ,CAACK,MAAM,CAACD,KAAK,CAAC,CACxB,CAAC;AACH;AAEA,OAAO,SAASE,sBAAsBA,CACpCN,QAAmC,EAChB;EACnB,OAAOnB,OAAO,CAACoB,WAAW,CAAC,eAAe,EAAGM,OAAY,IACvDP,QAAQ,CAACK,MAAM,CAACE,OAAO,CAAC,CAC1B,CAAC;AACH;AAEA,OAAO,SAASC,2BAA2BA,CACzCR,QAAoB,EACD;EACnB,OAAOnB,OAAO,CAACoB,WAAW,CAAC,oBAAoB,EAAE,MAAMD,QAAQ,CAAC,CAAC,CAAC;AACpE","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","PfmSdkReactNative","LuneViewType","emitter","initializeSdk","baseUrl","accessToken","optInForEventListener","optInForErrorLogger","optInForErrorNotifier","optInForSuccessNotifier","registerRefreshTokenCallback","provideRefreshedToken","token","destroySdk","showLuneView","viewIdentifier","showCashflowComponent","showBudgetComponent","showExpenseComponent","showBrandTrendComponent","console","warn","addLuneEventListener","callback","addListener","event","addLuneErrorListener","error","String","addLuneSuccessListener","message","addLuneTokenRefreshListener"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,kBAAkB,QAAQ,cAAc;AAEjD,OAAOC,iBAAiB,MAAM,8BAA2B;;AAEzD;AACA,SAASC,YAAY,QAAQ,8BAA2B;;AAExD;AACA,MAAMC,OAAO,GAAG,IAAIH,kBAAkB,CAACC,iBAAwB,CAAC;;AAEhE;AACA,OAAO,SAASG,aAAaA,CAC3BC,OAAe,EACfC,WAAmB,EACJ;EACf,OAAOL,iBAAiB,CAACG,aAAa,CAACC,OAAO,EAAEC,WAAW,CAAC;AAC9D;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAkB;EACrD,OAAON,iBAAiB,CAACM,qBAAqB,CAAC,CAAC;AAClD;AAEA,OAAO,SAASC,mBAAmBA,CAAA,EAAkB;EACnD,OAAOP,iBAAiB,CAACO,mBAAmB,CAAC,CAAC;AAChD;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAkB;EACrD,OAAOR,iBAAiB,CAACQ,qBAAqB,CAAC,CAAC;AAClD;AAEA,OAAO,SAASC,uBAAuBA,CAAA,EAAkB;EACvD,OAAOT,iBAAiB,CAACS,uBAAuB,CAAC,CAAC;AACpD;AAEA,OAAO,SAASC,4BAA4BA,CAAA,EAAkB;EAC5D,OAAOV,iBAAiB,CAACU,4BAA4B,CAAC,CAAC;AACzD;;AAEA;AACA,OAAO,SAASC,qBAAqBA,CAACC,KAAoB,EAAiB;EACzE,OAAOZ,iBAAiB,CAACW,qBAAqB,CAACC,KAAK,CAAC;AACvD;AAEA,OAAO,SAASC,UAAUA,CAAA,EAAkB;EAC1C,OAAOb,iBAAiB,CAACa,UAAU,CAAC,CAAC;AACvC;;AAEA;AACA,OAAO,SAASC,YAAYA,CAACC,cAAsB,EAAiB;EAClE,OAAOf,iBAAiB,CAACc,YAAY,CAACC,cAAc,CAAC;AACvD;AAEA,OAAO,SAASC,qBAAqBA,CAAA,EAAkB;EACrD,OAAOF,YAAY,CAAC,UAAU,CAAC;AACjC;AAEA,OAAO,SAASG,mBAAmBA,CAAA,EAAkB;EACnD,OAAOH,YAAY,CAAC,QAAQ,CAAC;AAC/B;AAEA,OAAO,SAASI,oBAAoBA,CAAA,EAAkB;EACpD,OAAOJ,YAAY,CAAC,OAAO,CAAC;AAC9B;AAEA,OAAO,SAASK,uBAAuBA,CAAA,EAAkB;EACvDC,OAAO,CAACC,IAAI,CAAC,0DAA0D,CAAC;EACxE,OAAOP,YAAY,CAAC,OAAO,CAAC;AAC9B;;AAEA;AACA,OAAO,SAASQ,oBAAoBA,CAClCC,QAA8B,EACX;EACnB,OAAOrB,OAAO,CAACsB,WAAW,CAAC,aAAa,EAAGC,KAAU,IAAKF,QAAQ,CAACE,KAAK,CAAC,CAAC;AAC5E;AAEA,OAAO,SAASC,oBAAoBA,CAClCH,QAAiC,EACd;EACnB,OAAOrB,OAAO,CAACsB,WAAW,CAAC,aAAa,EAAGG,KAAU,IACnDJ,QAAQ,CAACK,MAAM,CAACD,KAAK,CAAC,CACxB,CAAC;AACH;AAEA,OAAO,SAASE,sBAAsBA,CACpCN,QAAmC,EAChB;EACnB,OAAOrB,OAAO,CAACsB,WAAW,CAAC,eAAe,EAAGM,OAAY,IACvDP,QAAQ,CAACK,MAAM,CAACE,OAAO,CAAC,CAC1B,CAAC;AACH;AAEA,OAAO,SAASC,2BAA2BA,CACzCR,QAAoB,EACD;EACnB,OAAOrB,OAAO,CAACsB,WAAW,CAAC,oBAAoB,EAAE,MAAMD,QAAQ,CAAC,CAAC,CAAC;AACpE","ignoreList":[]}
@@ -19,6 +19,7 @@ export interface Spec extends TurboModule {
19
19
  optInForErrorNotifier(): Promise<void>;
20
20
  optInForSuccessNotifier(): Promise<void>;
21
21
  registerRefreshTokenCallback(): Promise<void>;
22
+ provideRefreshedToken(token: string | null): Promise<void>;
22
23
  destroySdk(): Promise<void>;
23
24
  showLuneView(viewIdentifier: string): Promise<void>;
24
25
  addListener(eventName: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NativePfmSdkReactNative.d.ts","sourceRoot":"","sources":["../../../src/NativePfmSdkReactNative.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,oBAAY,YAAY;IACtB,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,oBAAoB,yBAAyB;IAC7C,iBAAiB,sBAAsB;IACvC,UAAU,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,YAAY,UAAU;IACtB,aAAa,aAAa;IAC1B,WAAW,WAAW;IACtB,iBAAiB,gBAAgB;IACjC,mBAAmB,mBAAmB;CACvC;AAGD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG5B,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGpD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAED,wBAA2E"}
1
+ {"version":3,"file":"NativePfmSdkReactNative.d.ts","sourceRoot":"","sources":["../../../src/NativePfmSdkReactNative.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAIhD,oBAAY,YAAY;IACtB,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,oBAAoB,yBAAyB;IAC7C,iBAAiB,sBAAsB;IACvC,UAAU,eAAe;IACzB,gBAAgB,qBAAqB;IACrC,YAAY,UAAU;IACtB,aAAa,aAAa;IAC1B,WAAW,WAAW;IACtB,iBAAiB,gBAAgB;IACjC,mBAAmB,mBAAmB;CACvC;AAGD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAG9C,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAGpD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAED,wBAA2E"}
@@ -6,6 +6,7 @@ export declare function optInForErrorLogger(): Promise<void>;
6
6
  export declare function optInForErrorNotifier(): Promise<void>;
7
7
  export declare function optInForSuccessNotifier(): Promise<void>;
8
8
  export declare function registerRefreshTokenCallback(): Promise<void>;
9
+ export declare function provideRefreshedToken(token: string | null): Promise<void>;
9
10
  export declare function destroySdk(): Promise<void>;
10
11
  export declare function showLuneView(viewIdentifier: string): Promise<void>;
11
12
  export declare function showCashflowComponent(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMzD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEvD;AAED,wBAAgB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,wBAAgB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1C;AAGD,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpD;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGvD;AAGD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAC7B,iBAAiB,CAEnB;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAChC,iBAAiB,CAInB;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAClC,iBAAiB,CAInB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,IAAI,GACnB,iBAAiB,CAEnB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAMzD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEvD;AAED,wBAAgB,4BAA4B,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5D;AAGD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzE;AAED,wBAAgB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAE1C;AAGD,wBAAgB,YAAY,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAElE;AAED,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD;AAED,wBAAgB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEnD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEpD;AAED,wBAAgB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGvD;AAGD,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAC7B,iBAAiB,CAEnB;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAChC,iBAAiB,CAInB;AAED,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAClC,iBAAiB,CAInB;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,IAAI,GACnB,iBAAiB,CAEnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-pfm-sdk-react-native",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "React native plugin that intergates with native iOS and Android SDKs",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -24,9 +24,12 @@ export interface Spec extends TurboModule {
24
24
  optInForErrorNotifier(): Promise<void>;
25
25
  optInForSuccessNotifier(): Promise<void>;
26
26
  registerRefreshTokenCallback(): Promise<void>;
27
- destroySdk(): Promise<void>;
28
27
 
29
28
  // 🚀 NEW METHOD ADDED HERE:
29
+ provideRefreshedToken(token: string | null): Promise<void>;
30
+
31
+ destroySdk(): Promise<void>;
32
+
30
33
  showLuneView(viewIdentifier: string): Promise<void>;
31
34
 
32
35
  // REQUIRED FOR EVENT EMITTERS:
package/src/index.tsx CHANGED
@@ -36,6 +36,11 @@ export function registerRefreshTokenCallback(): Promise<void> {
36
36
  return PfmSdkReactNative.registerRefreshTokenCallback();
37
37
  }
38
38
 
39
+ // 🚀 NEW: The bridge to send the token back to Swift
40
+ export function provideRefreshedToken(token: string | null): Promise<void> {
41
+ return PfmSdkReactNative.provideRefreshedToken(token);
42
+ }
43
+
39
44
  export function destroySdk(): Promise<void> {
40
45
  return PfmSdkReactNative.destroySdk();
41
46
  }