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.
- package/android/src/main/java/com/pfmsdkreactnative/PfmSdkReactNativeModule.kt +52 -24
- package/ios/PfmSdkReactNative.mm +17 -3
- package/ios/PfmSdkReactNative.swift +21 -3
- package/lib/module/NativePfmSdkReactNative.js.map +1 -1
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/NativePfmSdkReactNative.d.ts +1 -0
- package/lib/typescript/src/NativePfmSdkReactNative.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NativePfmSdkReactNative.ts +4 -1
- package/src/index.tsx +5 -0
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
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", "
|
|
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 {
|
|
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
|
-
|
|
63
|
-
fun
|
|
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
|
|
66
|
-
|
|
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
|
-
|
|
87
|
-
|
|
88
|
-
|
|
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) }
|
package/ios/PfmSdkReactNative.mm
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
83
|
-
|
|
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
|
-
|
|
118
|
-
return
|
|
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;;
|
|
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":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -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
|
}
|
package/lib/module/index.js.map
CHANGED
|
@@ -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,
|
|
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;
|
|
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
|
@@ -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
|
}
|