react-native-fpay 0.3.5 → 0.3.6

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 (155) hide show
  1. package/lib/module/FountainPayProvider.js +106 -16
  2. package/lib/module/FountainPayProvider.js.map +1 -1
  3. package/lib/module/core/api/client.js +13 -1
  4. package/lib/module/core/api/client.js.map +1 -1
  5. package/lib/module/core/api/index.js +66 -24
  6. package/lib/module/core/api/index.js.map +1 -1
  7. package/lib/module/engine/BLEReceiverService.js.map +1 -1
  8. package/lib/module/engine/BLESenderService.js.map +1 -1
  9. package/lib/module/engine/FPEngine.js +164 -43
  10. package/lib/module/engine/FPEngine.js.map +1 -1
  11. package/lib/module/engine/NearbyUsersService.js +1 -1
  12. package/lib/module/engine/NearbyUsersService.js.map +1 -1
  13. package/lib/module/index.js +1 -0
  14. package/lib/module/index.js.map +1 -1
  15. package/lib/module/store/FPStore.js +155 -0
  16. package/lib/module/store/FPStore.js.map +1 -0
  17. package/lib/module/ui/components/AnimatedDots.js +3 -3
  18. package/lib/module/ui/components/AnimatedDots.js.map +1 -1
  19. package/lib/module/ui/components/ConfirmScreen.js +137 -123
  20. package/lib/module/ui/components/ConfirmScreen.js.map +1 -1
  21. package/lib/module/ui/components/FPButton.js.map +1 -1
  22. package/lib/module/ui/components/LoadingAnimation/InLoading.js +3 -3
  23. package/lib/module/ui/components/LoadingAnimation/InLoading.js.map +1 -1
  24. package/lib/module/ui/components/LoadingAnimation/index.js +3 -3
  25. package/lib/module/ui/components/LoadingAnimation/index.js.map +1 -1
  26. package/lib/module/ui/components/OtpInput/OTPInputView.js +11 -11
  27. package/lib/module/ui/components/OtpInput/OTPInputView.js.map +1 -1
  28. package/lib/module/ui/components/OtpInput/Styles.js +1 -1
  29. package/lib/module/ui/components/OtpInput/helpers/codeToArray.js +1 -1
  30. package/lib/module/ui/components/OtpInput/helpers/device.js.map +1 -1
  31. package/lib/module/ui/components/OtpInput/helpers/styles.js.map +1 -1
  32. package/lib/module/ui/components/OtpInput/index.js +3 -1
  33. package/lib/module/ui/components/OtpInput/index.js.map +1 -1
  34. package/lib/module/ui/components/PulseAnimation.js +2 -2
  35. package/lib/module/ui/components/PulseAnimation.js.map +1 -1
  36. package/lib/module/ui/modals/FPPaymentRequestModal.js +8 -7
  37. package/lib/module/ui/modals/FPPaymentRequestModal.js.map +1 -1
  38. package/lib/module/ui/modals/FPShell.js +2 -0
  39. package/lib/module/ui/modals/FPShell.js.map +1 -1
  40. package/lib/module/ui/screens/ReceiveScreen.js +8 -9
  41. package/lib/module/ui/screens/ReceiveScreen.js.map +1 -1
  42. package/lib/module/ui/screens/SendScreen.js +43 -94
  43. package/lib/module/ui/screens/SendScreen.js.map +1 -1
  44. package/lib/module/ui/screens/styles.js +15 -3
  45. package/lib/module/ui/screens/styles.js.map +1 -1
  46. package/lib/module/ui/screens/sub/receivePayment/Nfc/index.js +4 -4
  47. package/lib/module/ui/screens/sub/receivePayment/Nfc/index.js.map +1 -1
  48. package/lib/module/ui/screens/sub/receivePayment/Qr/index.js +5 -5
  49. package/lib/module/ui/screens/sub/receivePayment/Qr/index.js.map +1 -1
  50. package/lib/module/ui/screens/sub/receivePayment/Transfer/index.js +10 -11
  51. package/lib/module/ui/screens/sub/receivePayment/Transfer/index.js.map +1 -1
  52. package/lib/module/ui/screens/sub/sendPayment/BluetoothSubScreen.js +31 -8
  53. package/lib/module/ui/screens/sub/sendPayment/BluetoothSubScreen.js.map +1 -1
  54. package/lib/module/ui/screens/sub/sendPayment/NFCSubScreen.js +12 -8
  55. package/lib/module/ui/screens/sub/sendPayment/NFCSubScreen.js.map +1 -1
  56. package/lib/module/ui/screens/sub/sendPayment/NQRSubScreen.js +17 -5
  57. package/lib/module/ui/screens/sub/sendPayment/NQRSubScreen.js.map +1 -1
  58. package/lib/module/ui/screens/sub/sendPayment/ProximitySubScreen.js +67 -35
  59. package/lib/module/ui/screens/sub/sendPayment/ProximitySubScreen.js.map +1 -1
  60. package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js +110 -34
  61. package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js.map +1 -1
  62. package/lib/module/ui/theme/index.js.map +1 -1
  63. package/lib/typescript/src/FountainPayProvider.d.ts +1 -1
  64. package/lib/typescript/src/FountainPayProvider.d.ts.map +1 -1
  65. package/lib/typescript/src/core/api/client.d.ts.map +1 -1
  66. package/lib/typescript/src/core/api/index.d.ts +42 -26
  67. package/lib/typescript/src/core/api/index.d.ts.map +1 -1
  68. package/lib/typescript/src/core/types/index.d.ts +53 -28
  69. package/lib/typescript/src/core/types/index.d.ts.map +1 -1
  70. package/lib/typescript/src/engine/BLEReceiverService.d.ts +2 -0
  71. package/lib/typescript/src/engine/BLEReceiverService.d.ts.map +1 -1
  72. package/lib/typescript/src/engine/BLESenderService.d.ts.map +1 -1
  73. package/lib/typescript/src/engine/FPEngine.d.ts +5 -3
  74. package/lib/typescript/src/engine/FPEngine.d.ts.map +1 -1
  75. package/lib/typescript/src/engine/useIsForeground.d.ts.map +1 -1
  76. package/lib/typescript/src/index.d.ts +2 -1
  77. package/lib/typescript/src/index.d.ts.map +1 -1
  78. package/lib/typescript/src/store/FPStore.d.ts +60 -0
  79. package/lib/typescript/src/store/FPStore.d.ts.map +1 -0
  80. package/lib/typescript/src/ui/components/AnimatedDots.d.ts.map +1 -1
  81. package/lib/typescript/src/ui/components/ConfirmScreen.d.ts +5 -5
  82. package/lib/typescript/src/ui/components/ConfirmScreen.d.ts.map +1 -1
  83. package/lib/typescript/src/ui/components/FPButton.d.ts +1 -1
  84. package/lib/typescript/src/ui/components/FPButton.d.ts.map +1 -1
  85. package/lib/typescript/src/ui/components/LoadingAnimation/InLoading.d.ts.map +1 -1
  86. package/lib/typescript/src/ui/components/LoadingAnimation/index.d.ts.map +1 -1
  87. package/lib/typescript/src/ui/components/OtpInput/OTPInputView.d.ts.map +1 -1
  88. package/lib/typescript/src/ui/components/OtpInput/helpers/codeToArray.d.ts.map +1 -1
  89. package/lib/typescript/src/ui/components/OtpInput/helpers/device.d.ts.map +1 -1
  90. package/lib/typescript/src/ui/components/OtpInput/helpers/styles.d.ts.map +1 -1
  91. package/lib/typescript/src/ui/components/OtpInput/helpers/types.d.ts +1 -2
  92. package/lib/typescript/src/ui/components/OtpInput/helpers/types.d.ts.map +1 -1
  93. package/lib/typescript/src/ui/components/OtpInput/index.d.ts +3 -1
  94. package/lib/typescript/src/ui/components/OtpInput/index.d.ts.map +1 -1
  95. package/lib/typescript/src/ui/components/PulseAnimation.d.ts.map +1 -1
  96. package/lib/typescript/src/ui/modals/FPPaymentRequestModal.d.ts.map +1 -1
  97. package/lib/typescript/src/ui/modals/FPShell.d.ts.map +1 -1
  98. package/lib/typescript/src/ui/screens/ReceiveScreen.d.ts +1 -1
  99. package/lib/typescript/src/ui/screens/ReceiveScreen.d.ts.map +1 -1
  100. package/lib/typescript/src/ui/screens/SendScreen.d.ts +1 -1
  101. package/lib/typescript/src/ui/screens/SendScreen.d.ts.map +1 -1
  102. package/lib/typescript/src/ui/screens/styles.d.ts +197 -0
  103. package/lib/typescript/src/ui/screens/styles.d.ts.map +1 -1
  104. package/lib/typescript/src/ui/screens/sub/receivePayment/Nfc/index.d.ts.map +1 -1
  105. package/lib/typescript/src/ui/screens/sub/receivePayment/Qr/index.d.ts.map +1 -1
  106. package/lib/typescript/src/ui/screens/sub/receivePayment/Transfer/index.d.ts.map +1 -1
  107. package/lib/typescript/src/ui/screens/sub/sendPayment/BluetoothSubScreen.d.ts.map +1 -1
  108. package/lib/typescript/src/ui/screens/sub/sendPayment/NFCSubScreen.d.ts +1 -1
  109. package/lib/typescript/src/ui/screens/sub/sendPayment/NFCSubScreen.d.ts.map +1 -1
  110. package/lib/typescript/src/ui/screens/sub/sendPayment/NQRSubScreen.d.ts +1 -1
  111. package/lib/typescript/src/ui/screens/sub/sendPayment/NQRSubScreen.d.ts.map +1 -1
  112. package/lib/typescript/src/ui/screens/sub/sendPayment/ProximitySubScreen.d.ts +1 -1
  113. package/lib/typescript/src/ui/screens/sub/sendPayment/ProximitySubScreen.d.ts.map +1 -1
  114. package/lib/typescript/src/ui/screens/sub/sendPayment/TransferSubScreen.d.ts +1 -1
  115. package/lib/typescript/src/ui/screens/sub/sendPayment/TransferSubScreen.d.ts.map +1 -1
  116. package/lib/typescript/src/ui/theme/index.d.ts.map +1 -1
  117. package/package.json +4 -4
  118. package/src/FountainPayProvider.tsx +164 -23
  119. package/src/core/api/client.ts +26 -4
  120. package/src/core/api/index.ts +170 -49
  121. package/src/core/types/index.ts +81 -48
  122. package/src/engine/BLEReceiverService.ts +86 -28
  123. package/src/engine/BLESenderService.ts +133 -69
  124. package/src/engine/FPEngine.ts +316 -97
  125. package/src/engine/NearbyUsersService.ts +6 -6
  126. package/src/engine/useIsForeground.ts +12 -12
  127. package/src/index.ts +10 -4
  128. package/src/store/FPStore.ts +216 -0
  129. package/src/ui/components/AnimatedDots.tsx +4 -5
  130. package/src/ui/components/ConfirmScreen.tsx +182 -169
  131. package/src/ui/components/FPButton.tsx +50 -9
  132. package/src/ui/components/LoadingAnimation/InLoading.tsx +23 -27
  133. package/src/ui/components/LoadingAnimation/index.tsx +3 -7
  134. package/src/ui/components/OtpInput/OTPInputView.tsx +254 -205
  135. package/src/ui/components/OtpInput/Styles.ts +1 -1
  136. package/src/ui/components/OtpInput/helpers/codeToArray.ts +2 -2
  137. package/src/ui/components/OtpInput/helpers/device.ts +4 -3
  138. package/src/ui/components/OtpInput/helpers/styles.ts +13 -14
  139. package/src/ui/components/OtpInput/helpers/types.ts +83 -79
  140. package/src/ui/components/OtpInput/index.tsx +18 -15
  141. package/src/ui/components/PulseAnimation.tsx +3 -5
  142. package/src/ui/modals/FPPaymentRequestModal.tsx +111 -28
  143. package/src/ui/modals/FPShell.tsx +60 -34
  144. package/src/ui/screens/ReceiveScreen.tsx +245 -84
  145. package/src/ui/screens/SendScreen.tsx +419 -167
  146. package/src/ui/screens/styles.ts +17 -5
  147. package/src/ui/screens/sub/receivePayment/Nfc/index.tsx +17 -25
  148. package/src/ui/screens/sub/receivePayment/Qr/index.tsx +21 -20
  149. package/src/ui/screens/sub/receivePayment/Transfer/index.tsx +34 -28
  150. package/src/ui/screens/sub/sendPayment/BluetoothSubScreen.tsx +135 -67
  151. package/src/ui/screens/sub/sendPayment/NFCSubScreen.tsx +188 -112
  152. package/src/ui/screens/sub/sendPayment/NQRSubScreen.tsx +102 -69
  153. package/src/ui/screens/sub/sendPayment/ProximitySubScreen.tsx +225 -99
  154. package/src/ui/screens/sub/sendPayment/TransferSubScreen.tsx +209 -89
  155. package/src/ui/theme/index.ts +14 -2
@@ -8,9 +8,10 @@ import { AppState, Vibration } from 'react-native';
8
8
  import AsyncStorage from '@react-native-async-storage/async-storage';
9
9
  import Geolocation from '@react-native-community/geolocation';
10
10
  import { initClient } from "../core/api/client.js";
11
- import { proximityAPI, walletAPI } from "../core/api/index.js";
11
+ import { proximityAPI, accountAPI } from "../core/api/index.js";
12
12
  import BLEReceiverService from "./BLEReceiverService.js";
13
13
  import BLESenderService from "./BLESenderService.js";
14
+ import { getFPStore, isBalanceCacheValid } from "../store/FPStore.js";
14
15
 
15
16
  // ── Module-level singleton state ──────────────────────────────
16
17
  let _apiKey = null;
@@ -23,6 +24,7 @@ let _isListening = false;
23
24
  let _proximitySessionId = null;
24
25
  let _proximityInterval = null;
25
26
  let _appStateSub = null;
27
+ const PROXIMITY_THRESHOLD_METERS = 100;
26
28
 
27
29
  // ── Internal event bus ────────────────────────────────────────
28
30
  // Used to communicate between FPEngine and the UI layer
@@ -62,31 +64,72 @@ function _getLocation() {
62
64
  });
63
65
  }
64
66
  async function _startProximityBroadcast() {
65
- if (!_user || !_account) return;
67
+ const store = getFPStore();
68
+ const psspId = store.psspId;
69
+ if (!_user || !psspId) {
70
+ console.warn('[FPay Engine] Proximity skipped — no user or psspId');
71
+ return;
72
+ }
66
73
  try {
67
74
  const loc = await _getLocation();
68
- const session = await proximityAPI.broadcast({
75
+
76
+ // Check if we've moved more than 100m from last broadcast position
77
+ const lastPos = store.lastBroadcastPosition;
78
+ if (lastPos) {
79
+ const distance = _getDistanceMeters(lastPos.latitude, lastPos.longitude, loc.lat, loc.lng);
80
+ if (distance < PROXIMITY_THRESHOLD_METERS) {
81
+ console.log(`[FPay Engine] Within ${Math.round(distance)}m of last broadcast — skipping`);
82
+ return; // Not moved enough — no need to broadcast
83
+ }
84
+ console.log(`[FPay Engine] Moved ${Math.round(distance)}m — broadcasting new position`);
85
+ }
86
+
87
+ // Broadcast new position
88
+ const session = await proximityAPI.broadcast(psspId, {
69
89
  latitude: loc.lat,
70
90
  longitude: loc.lng,
71
- user: _user?.name || "",
72
- email: _user?.email || "",
73
- accountName: _account?.accountName || "",
74
- accountNumber: _account?.accountNumber || "",
75
- bankCode: _account?.bankCode || "",
76
- bankName: _account?.bankName || ""
91
+ user_type: 'VIRTUAL_ACCOUNT_USER'
92
+ });
93
+
94
+ // Save new position to store
95
+ store.setLastBroadcastPosition({
96
+ latitude: loc.lat,
97
+ longitude: loc.lng
77
98
  });
78
99
  _proximitySessionId = session.sessionId;
100
+ console.log('[FPay Engine] Proximity broadcast active at:', loc.lat, loc.lng);
101
+
102
+ // Start heartbeat interval
79
103
  _clearProximityInterval();
80
104
  _proximityInterval = setInterval(async () => {
81
105
  if (!_proximitySessionId) return;
82
106
  try {
83
- const l = await _getLocation();
84
- await proximityAPI.heartbeat(_proximitySessionId, l.lat, l.lng);
85
- } catch {/* silent — heartbeat failure is non-fatal */}
107
+ const current = await _getLocation();
108
+ const saved = getFPStore().lastBroadcastPosition;
109
+ if (saved) {
110
+ const moved = _getDistanceMeters(saved.latitude, saved.longitude, current.lat, current.lng);
111
+ if (moved >= PROXIMITY_THRESHOLD_METERS) {
112
+ // Moved significantly — broadcast new position
113
+ console.log(`[FPay Engine] Heartbeat: moved ${Math.round(moved)}m — re-broadcasting`);
114
+ await proximityAPI.broadcast(psspId, {
115
+ latitude: current.lat,
116
+ longitude: current.lng,
117
+ user_type: 'VIRTUAL_ACCOUNT_USER'
118
+ });
119
+ getFPStore().setLastBroadcastPosition({
120
+ latitude: current.lat,
121
+ longitude: current.lng
122
+ });
123
+ } else {
124
+ // Just send heartbeat to keep session alive
125
+ await proximityAPI.heartbeat(_proximitySessionId, current.lat, current.lng);
126
+ }
127
+ }
128
+ } catch {
129
+ /* silent */
130
+ }
86
131
  }, 15000);
87
- console.log('[FPay Engine] Proximity broadcast active');
88
132
  } catch (err) {
89
- // Non-fatal — app still works without proximity
90
133
  console.warn('[FPay Engine] Proximity unavailable:', err.message);
91
134
  }
92
135
  }
@@ -164,7 +207,8 @@ async function _handleIncomingRequest(req, deviceId) {
164
207
  const fpRequest = {
165
208
  requestId: req.senderId + '_' + req.timestamp,
166
209
  sender: {
167
- name: req.senderName,
210
+ firstName: req.senderName,
211
+ lastName: '',
168
212
  phone: req.senderPhone,
169
213
  email: req.senderEmail,
170
214
  userId: req.senderId,
@@ -182,7 +226,71 @@ async function _handleIncomingRequest(req, deviceId) {
182
226
  // 2. Fire internal event → FPPaymentRequestModal will render the Accept/Decline UI
183
227
  _emitEvent('incoming_payment_request', fpRequest);
184
228
  }
229
+ async function _resolveAccount(user, callbacks) {
230
+ const store = getFPStore();
231
+ // const existingPsspId = store.psspId; // ← read before clearing
185
232
 
233
+ // // Now safe to clear stale data
234
+ // store.clearUser();
235
+ // store.clearAccount();
236
+ // store.clearBalance();
237
+ const psspId = store.psspId;
238
+ try {
239
+ if (psspId) {
240
+ // ← use the saved value, not store.psspId
241
+ console.log('[FPay Engine] Existing PSSP id found — fetching account...');
242
+ try {
243
+ const account = await accountAPI.getAccount(psspId);
244
+ store.setAccount(account);
245
+ store.setUser(user);
246
+ callbacks.onAccountReady?.(account);
247
+ _fetchBalance();
248
+ return;
249
+ } catch (err) {
250
+ console.warn('[FPay Engine] Existing account fetch failed — creating new...');
251
+ }
252
+ }
253
+
254
+ // Create new account
255
+ const account = await accountAPI.generate(user);
256
+ if (account.status) {
257
+ store.setPsspId(account.id);
258
+ store.setAccount(account);
259
+ store.setUser(user);
260
+ callbacks.onAccountReady?.(account);
261
+ _fetchBalance();
262
+ }
263
+ } catch (err) {
264
+ callbacks.onAccountError?.(err, user);
265
+ }
266
+ }
267
+ async function _fetchBalance() {
268
+ const {
269
+ psspId
270
+ } = getFPStore();
271
+ if (!psspId) return;
272
+ if (isBalanceCacheValid()) {
273
+ console.log('[FPay Engine] Balance cache valid — skipping fetch.');
274
+ return;
275
+ }
276
+ try {
277
+ const {
278
+ balance
279
+ } = await accountAPI.getBalance(psspId);
280
+ getFPStore().setBalance(balance);
281
+ console.log('[FPay Engine] Balance fetched:', balance);
282
+ } catch (err) {
283
+ console.warn('[FPay Engine] Balance fetch failed (non-fatal):', err);
284
+ }
285
+ }
286
+ function _getDistanceMeters(lat1, lng1, lat2, lng2) {
287
+ const R = 6371000; // Earth radius in meters
288
+ const toRad = deg => deg * Math.PI / 180;
289
+ const dLat = toRad(lat2 - lat1);
290
+ const dLng = toRad(lng2 - lng1);
291
+ const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(toRad(lat1)) * Math.cos(toRad(lat2)) * Math.sin(dLng / 2) * Math.sin(dLng / 2);
292
+ return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
293
+ }
186
294
  // ── FPEngine public API ───────────────────────────────────────
187
295
 
188
296
  export const FPEngine = {
@@ -193,25 +301,16 @@ export const FPEngine = {
193
301
  _user = user;
194
302
  _options = options;
195
303
  _callbacks = callbacks;
196
-
197
- // Boot the HTTP client
198
304
  initClient(apiKey, {
199
305
  baseUrl: options.baseUrl,
200
306
  environment: options.environment
201
307
  });
308
+ const displayName = options.bluetoothDisplayName ?? `${user.firstName} ${user.lastName}`;
309
+ await BLEReceiverService.initializeWithUserInfo(user.userId ?? '', displayName, 'FountainPay');
202
310
 
203
- // Initialize BLE receiver with this user's info
204
- const displayName = options.bluetoothDisplayName ?? user.name;
205
- await BLEReceiverService.initializeWithUserInfo(user.userId ?? user.userId, displayName, 'FountainPay');
206
-
207
- // Start BLE advertising + proximity broadcast in parallel.
208
- // Both are non-fatal — SDK still works if either fails.
209
- await Promise.allSettled([BLEReceiverService.startAdvertising(), _startProximityBroadcast()]);
210
-
211
- // Initialize BLE sender (central) — used when user sends payments via BT
311
+ // Start BLE advertising immediately doesn't need psspId
312
+ await BLEReceiverService.startAdvertising().catch(err => console.warn('[FPay Engine] BLE advertising failed (non-fatal):', err));
212
313
  await BLESenderService.initialize().catch(err => console.warn('[FPay Engine] BLE sender init failed (non-fatal):', err));
213
-
214
- // Resume broadcasting when app returns to foreground
215
314
  _appStateSub = AppState.addEventListener('change', next => {
216
315
  if (next === 'active' && _isReady) {
217
316
  _startProximityBroadcast();
@@ -222,6 +321,11 @@ export const FPEngine = {
222
321
  });
223
322
  _isReady = true;
224
323
  console.log('[FPay Engine] Initialized. Advertising as:', displayName);
324
+
325
+ // Resolve account first — sets psspId in store
326
+ // Then broadcast proximity — needs psspId to be set
327
+ await _resolveAccount(user, callbacks);
328
+ await _startProximityBroadcast(); // ← moved here, after psspId is available
225
329
  },
226
330
  async setAccountDetails(account) {
227
331
  _account = account;
@@ -248,28 +352,33 @@ export const FPEngine = {
248
352
  async acceptPaymentRequest(request) {
249
353
  try {
250
354
  const transactionId = 'txn_' + Date.now() + '_' + Math.random().toString(36).substr(2, 9);
355
+ const store = getFPStore();
356
+ const account = getFPStore().account;
251
357
 
252
- // Build response same shape as your original:
253
- // { accepted, transactionId, timestamp, accountDetails, requestTimestamp }
358
+ // Build BLE response with receiver's wallet details
254
359
  const response = {
255
360
  accepted: true,
256
361
  transactionId,
257
362
  timestamp: Date.now(),
258
- accountDetails: _account ? {
259
- accountName: _account?.accountName,
260
- accountNumber: _account?.accountNumber,
261
- bankName: _account?.bankName,
262
- bankCode: _account?.bankCode
263
- } : undefined,
264
- // requestTimestamp is echoed back so the sender's polling can match it
265
- requestTimestamp: new Date(request.timestamp).getTime()
363
+ requestTimestamp: new Date(request.timestamp).getTime(),
364
+ accountDetails: account ? {
365
+ accountName: account.accountName,
366
+ accountNumber: account.accountNumber,
367
+ bankName: account.bankName ?? '',
368
+ bankCode: account.bankCode ?? '',
369
+ userId: store.psspId ?? undefined,
370
+ type: 'USER'
371
+ } : undefined
266
372
  };
267
-
268
- // Write response to the BLE characteristic — sender is polling this
373
+ console.log('[FPay Engine] _account at accept time:', _account);
374
+ console.log('[FPay Engine] store account at accept time:', getFPStore().account);
375
+ console.log('[FPay Engine] response at accept time:', response);
376
+ // Send response back to sender via BLE
269
377
  await BLEReceiverService.sendPaymentResponse(response);
270
378
  console.log('[FPay Engine] Acceptance response sent to sender');
271
379
 
272
- // Notify host app
380
+ // Notify host app that payment is incoming
381
+ // Status is 'pending' until sender confirms transfer on their end
273
382
  const tx = {
274
383
  id: transactionId,
275
384
  reference: transactionId,
@@ -277,11 +386,17 @@ export const FPEngine = {
277
386
  channel: 'bluetooth',
278
387
  amount: request.amount,
279
388
  currency: request.currency,
280
- status: 'successful',
389
+ status: 'pending',
390
+ // ← pending until sender processes
281
391
  sender: request.sender,
282
392
  createdAt: new Date().toISOString()
283
393
  };
284
394
  _callbacks.onPaymentReceived?.(tx);
395
+
396
+ // Refresh balance after a delay to give sender time to process
397
+ setTimeout(() => {
398
+ _fetchBalance();
399
+ }, 5000); // ← 5s delay to allow sender's transfer to settle
285
400
  } catch (err) {
286
401
  _callbacks.onError?.(err);
287
402
  }
@@ -315,7 +430,13 @@ export const FPEngine = {
315
430
  // ── Other SDK actions ──────────────────────────────────────
316
431
 
317
432
  async generateAccount(req) {
318
- return walletAPI.generate(req);
433
+ return accountAPI.generate(req);
434
+ },
435
+ async refreshBalance() {
436
+ await _fetchBalance();
437
+ },
438
+ closeSend() {
439
+ _emitEvent('close_send');
319
440
  },
320
441
  showSend(amount, currency) {
321
442
  _emitEvent('show_send', {
@@ -1 +1 @@
1
- {"version":3,"names":["AppState","Vibration","AsyncStorage","Geolocation","initClient","proximityAPI","walletAPI","BLEReceiverService","BLESenderService","_apiKey","_user","_account","_callbacks","_options","_isReady","_isListening","_proximitySessionId","_proximityInterval","_appStateSub","_listeners","Map","_emitEvent","event","data","get","forEach","fn","_onEvent","has","set","Set","add","delete","_clearProximityInterval","clearInterval","_getLocation","Promise","resolve","reject","getCurrentPosition","p","lat","coords","latitude","lng","longitude","e","code","message","enableHighAccuracy","timeout","maximumAge","_startProximityBroadcast","loc","session","broadcast","user","name","email","accountName","accountNumber","bankCode","bankName","sessionId","setInterval","l","heartbeat","console","log","err","warn","_stopProximityBroadcast","unregister","catch","_validateRequest","req","AGE_LIMIT","Date","now","timestamp","raw","getItem","blocked","JSON","parse","includes","senderId","amount","recent","isDuplicate","some","r","Math","abs","setItem","stringify","slice","_handleIncomingRequest","deviceId","senderName","currency","isValid","sendPaymentResponse","accepted","vibrate","fpRequest","requestId","sender","phone","senderPhone","senderEmail","userId","deviceName","toISOString","onPaymentRequest","FPEngine","initialize","apiKey","options","callbacks","baseUrl","environment","displayName","bluetoothDisplayName","initializeWithUserInfo","allSettled","startAdvertising","addEventListener","next","setAccountDetails","account","deviceConnection","connectToDevice","startListening","listenForPaymentRequests","stopListening","acceptPaymentRequest","request","transactionId","random","toString","substr","response","accountDetails","undefined","requestTimestamp","getTime","tx","id","reference","type","channel","status","createdAt","onPaymentReceived","onError","declinePaymentRequest","onPaymentDeclined","scanForBluetoothDevices","onDeviceFound","durationMs","scanForDevices","sendBluetoothPaymentRequest","sendPaymentRequest","generateAccount","generate","showSend","showReceive","getUser","getAccount","isReady","getCallbacks","destroy","stopAdvertising","remove","clear"],"sourceRoot":"../../../src","sources":["engine/FPEngine.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["AppState","Vibration","AsyncStorage","Geolocation","initClient","proximityAPI","accountAPI","BLEReceiverService","BLESenderService","getFPStore","isBalanceCacheValid","_apiKey","_user","_account","_callbacks","_options","_isReady","_isListening","_proximitySessionId","_proximityInterval","_appStateSub","PROXIMITY_THRESHOLD_METERS","_listeners","Map","_emitEvent","event","data","get","forEach","fn","_onEvent","has","set","Set","add","delete","_clearProximityInterval","clearInterval","_getLocation","Promise","resolve","reject","getCurrentPosition","p","lat","coords","latitude","lng","longitude","e","code","message","enableHighAccuracy","timeout","maximumAge","_startProximityBroadcast","store","psspId","console","warn","loc","lastPos","lastBroadcastPosition","distance","_getDistanceMeters","log","Math","round","session","broadcast","user_type","setLastBroadcastPosition","sessionId","setInterval","current","saved","moved","heartbeat","err","_stopProximityBroadcast","unregister","catch","_validateRequest","req","AGE_LIMIT","Date","now","timestamp","raw","getItem","blocked","JSON","parse","includes","senderId","amount","recent","isDuplicate","some","r","abs","setItem","stringify","slice","_handleIncomingRequest","deviceId","senderName","currency","isValid","sendPaymentResponse","accepted","vibrate","fpRequest","requestId","sender","firstName","lastName","phone","senderPhone","email","senderEmail","userId","deviceName","toISOString","onPaymentRequest","_resolveAccount","user","callbacks","account","getAccount","setAccount","setUser","onAccountReady","_fetchBalance","generate","status","setPsspId","id","onAccountError","balance","getBalance","setBalance","lat1","lng1","lat2","lng2","R","toRad","deg","PI","dLat","dLng","a","sin","cos","atan2","sqrt","FPEngine","initialize","apiKey","options","baseUrl","environment","displayName","bluetoothDisplayName","initializeWithUserInfo","startAdvertising","addEventListener","next","setAccountDetails","deviceConnection","connectToDevice","startListening","listenForPaymentRequests","stopListening","acceptPaymentRequest","request","transactionId","random","toString","substr","response","requestTimestamp","getTime","accountDetails","accountName","accountNumber","bankName","bankCode","undefined","type","tx","reference","channel","createdAt","onPaymentReceived","setTimeout","onError","declinePaymentRequest","onPaymentDeclined","scanForBluetoothDevices","onDeviceFound","durationMs","scanForDevices","sendBluetoothPaymentRequest","sendPaymentRequest","generateAccount","refreshBalance","closeSend","showSend","showReceive","getUser","isReady","getCallbacks","destroy","stopAdvertising","remove","clear"],"sourceRoot":"../../../src","sources":["engine/FPEngine.ts"],"mappings":"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","ignoreList":[]}
@@ -43,7 +43,7 @@ class NearbyUsersService {
43
43
  const authToken = await this.getAuthToken();
44
44
  const response = await fetch(`${this.API_URL}/api/users/nearby?radius=50`, {
45
45
  headers: {
46
- 'Authorization': `Bearer ${authToken}`
46
+ Authorization: `Bearer ${authToken}`
47
47
  }
48
48
  });
49
49
  if (!response.ok) {
@@ -1 +1 @@
1
- {"version":3,"names":["Geolocation","NearbyUsersService","API_URL","startBroadcasting","locationUpdateInterval","setInterval","sendLocationToServer","getCurrentPosition","position","latitude","longitude","coords","authToken","getAuthToken","fetch","method","headers","body","JSON","stringify","timestamp","Date","now","error","console","enableHighAccuracy","timeout","maximumAge","getNearbyUsers","response","ok","Error","json","sendPaymentRequest","receiverId","amount","currency","stopBroadcasting","clearInterval"],"sourceRoot":"../../../src","sources":["engine/NearbyUsersService.ts"],"mappings":";;AAAA;AACA,OAAOA,WAAW,MAAM,qCAAqC;AAS7D,MAAMC,kBAAkB,CAAC;EAENC,OAAO,GAAG,wCAAwC;;EAEnE;EACA,MAAMC,iBAAiBA,CAAA,EAAG;IACxB;IACA,IAAI,CAACC,sBAAsB,GAAGC,WAAW,CAAC,MAAM;MAC9C,IAAI,CAACC,oBAAoB,CAAC,CAAC;IAC7B,CAAC,EAAE,IAAI,CAAC;EACV;EAEA,MAAcA,oBAAoBA,CAAA,EAAG;IACnCN,WAAW,CAACO,kBAAkB,CAC5B,MAAOC,QAAQ,IAAK;MAClB,MAAM;QAAEC,QAAQ;QAAEC;MAAU,CAAC,GAAGF,QAAQ,CAACG,MAAM;MAE/C,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACC,YAAY,CAAC,CAAC;MAE3C,MAAMC,KAAK,CAAC,GAAG,IAAI,CAACZ,OAAO,qBAAqB,EAAE;QAChDa,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE;UACP,cAAc,EAAE,kBAAkB;UAClC,eAAe,EAAE,UAAUJ,SAAS;QACtC,CAAC;QACDK,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;UACnBV,QAAQ;UACRC,SAAS;UACTU,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC;QACtB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,EACAC,KAAK,IAAKC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK,CAAC,EAClD;MAAEE,kBAAkB,EAAE,IAAI;MAAEC,OAAO,EAAE,KAAK;MAAEC,UAAU,EAAE;IAAK,CAC/D,CAAC;EACH;;EAEA;EACA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,MAAMhB,SAAS,GAAG,MAAM,IAAI,CAACC,YAAY,CAAC,CAAC;IAE3C,MAAMgB,QAAQ,GAAG,MAAMf,KAAK,CAAC,GAAG,IAAI,CAACZ,OAAO,6BAA6B,EAAE;MACzEc,OAAO,EAAE;QACP,eAAe,EAAE,UAAUJ,SAAS;MACtC;IACF,CAAC,CAAC;IAEF,IAAI,CAACiB,QAAQ,CAACC,EAAE,EAAE;MAChB,MAAM,IAAIC,KAAK,CAAC,4BAA4B,CAAC;IAC/C;IAEA,OAAOF,QAAQ,CAACG,IAAI,CAAC,CAAC;EACxB;;EAEA;EACA,MAAMC,kBAAkBA,CACtBC,UAAkB,EAClBC,MAAc,EACdC,QAAgB,GAAG,KAAK,EACxB;IACA,MAAMxB,SAAS,GAAG,MAAM,IAAI,CAACC,YAAY,CAAC,CAAC;IAE3C,MAAMgB,QAAQ,GAAG,MAAMf,KAAK,CAAC,GAAG,IAAI,CAACZ,OAAO,uBAAuB,EAAE;MACnEa,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE;QACP,cAAc,EAAE,kBAAkB;QAClC,eAAe,EAAE,UAAUJ,SAAS;MACtC,CAAC;MACDK,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;QACnBe,UAAU;QACVC,MAAM;QACNC,QAAQ;QACRhB,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC;MACtB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAACO,QAAQ,CAACC,EAAE,EAAE;MAChB,MAAM,IAAIC,KAAK,CAAC,gCAAgC,CAAC;IACnD;IAEA,OAAOF,QAAQ,CAACG,IAAI,CAAC,CAAC;EACxB;EAEAK,gBAAgBA,CAAA,EAAG;IACjB,IAAI,IAAI,CAACjC,sBAAsB,EAAE;MAC/BkC,aAAa,CAAC,IAAI,CAAClC,sBAAsB,CAAC;IAC5C;EACF;EAEA,MAAcS,YAAYA,CAAA,EAAoB;IAC5C;IACA,OAAO,gBAAgB;EACzB;AACF;AAEA,eAAe,IAAIZ,kBAAkB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Geolocation","NearbyUsersService","API_URL","startBroadcasting","locationUpdateInterval","setInterval","sendLocationToServer","getCurrentPosition","position","latitude","longitude","coords","authToken","getAuthToken","fetch","method","headers","body","JSON","stringify","timestamp","Date","now","error","console","enableHighAccuracy","timeout","maximumAge","getNearbyUsers","response","Authorization","ok","Error","json","sendPaymentRequest","receiverId","amount","currency","stopBroadcasting","clearInterval"],"sourceRoot":"../../../src","sources":["engine/NearbyUsersService.ts"],"mappings":";;AAAA;AACA,OAAOA,WAAW,MAAM,qCAAqC;AAS7D,MAAMC,kBAAkB,CAAC;EAENC,OAAO,GAAG,wCAAwC;;EAEnE;EACA,MAAMC,iBAAiBA,CAAA,EAAG;IACxB;IACA,IAAI,CAACC,sBAAsB,GAAGC,WAAW,CAAC,MAAM;MAC9C,IAAI,CAACC,oBAAoB,CAAC,CAAC;IAC7B,CAAC,EAAE,IAAI,CAAC;EACV;EAEA,MAAcA,oBAAoBA,CAAA,EAAG;IACnCN,WAAW,CAACO,kBAAkB,CAC5B,MAAOC,QAAQ,IAAK;MAClB,MAAM;QAAEC,QAAQ;QAAEC;MAAU,CAAC,GAAGF,QAAQ,CAACG,MAAM;MAE/C,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACC,YAAY,CAAC,CAAC;MAE3C,MAAMC,KAAK,CAAC,GAAG,IAAI,CAACZ,OAAO,qBAAqB,EAAE;QAChDa,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE;UACP,cAAc,EAAE,kBAAkB;UAClC,eAAe,EAAE,UAAUJ,SAAS;QACtC,CAAC;QACDK,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;UACnBV,QAAQ;UACRC,SAAS;UACTU,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC;QACtB,CAAC;MACH,CAAC,CAAC;IACJ,CAAC,EACAC,KAAK,IAAKC,OAAO,CAACD,KAAK,CAAC,iBAAiB,EAAEA,KAAK,CAAC,EAClD;MAAEE,kBAAkB,EAAE,IAAI;MAAEC,OAAO,EAAE,KAAK;MAAEC,UAAU,EAAE;IAAK,CAC/D,CAAC;EACH;;EAEA;EACA,MAAMC,cAAcA,CAAA,EAA0B;IAC5C,MAAMhB,SAAS,GAAG,MAAM,IAAI,CAACC,YAAY,CAAC,CAAC;IAE3C,MAAMgB,QAAQ,GAAG,MAAMf,KAAK,CAAC,GAAG,IAAI,CAACZ,OAAO,6BAA6B,EAAE;MACzEc,OAAO,EAAE;QACPc,aAAa,EAAE,UAAUlB,SAAS;MACpC;IACF,CAAC,CAAC;IAEF,IAAI,CAACiB,QAAQ,CAACE,EAAE,EAAE;MAChB,MAAM,IAAIC,KAAK,CAAC,4BAA4B,CAAC;IAC/C;IAEA,OAAOH,QAAQ,CAACI,IAAI,CAAC,CAAC;EACxB;;EAEA;EACA,MAAMC,kBAAkBA,CACtBC,UAAkB,EAClBC,MAAc,EACdC,QAAgB,GAAG,KAAK,EACxB;IACA,MAAMzB,SAAS,GAAG,MAAM,IAAI,CAACC,YAAY,CAAC,CAAC;IAE3C,MAAMgB,QAAQ,GAAG,MAAMf,KAAK,CAAC,GAAG,IAAI,CAACZ,OAAO,uBAAuB,EAAE;MACnEa,MAAM,EAAE,MAAM;MACdC,OAAO,EAAE;QACP,cAAc,EAAE,kBAAkB;QAClC,eAAe,EAAE,UAAUJ,SAAS;MACtC,CAAC;MACDK,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;QACnBgB,UAAU;QACVC,MAAM;QACNC,QAAQ;QACRjB,SAAS,EAAEC,IAAI,CAACC,GAAG,CAAC;MACtB,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,CAACO,QAAQ,CAACE,EAAE,EAAE;MAChB,MAAM,IAAIC,KAAK,CAAC,gCAAgC,CAAC;IACnD;IAEA,OAAOH,QAAQ,CAACI,IAAI,CAAC,CAAC;EACxB;EAEAK,gBAAgBA,CAAA,EAAG;IACjB,IAAI,IAAI,CAAClC,sBAAsB,EAAE;MAC/BmC,aAAa,CAAC,IAAI,CAACnC,sBAAsB,CAAC;IAC5C;EACF;EAEA,MAAcS,YAAYA,CAAA,EAAoB;IAC5C;IACA,OAAO,gBAAgB;EACzB;AACF;AAEA,eAAe,IAAIZ,kBAAkB,CAAC,CAAC","ignoreList":[]}
@@ -11,6 +11,7 @@ export { useFountainPay } from "./useFountainPay.js";
11
11
 
12
12
  // The one provider (mount at app root)
13
13
  export { FountainPayProvider } from "./FountainPayProvider.js";
14
+ export { useFPStore, getFPStore, isBanksCacheValid, isTokenValid } from "./store/FPStore.js";
14
15
 
15
16
  // All TypeScript types (for type-safe usage)
16
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useFountainPay","FountainPayProvider"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,cAAc,QAAc,qBAAkB;;AAEvD;AACA,SAASC,mBAAmB,QAAS,0BAAuB;;AAE5D","ignoreList":[]}
1
+ {"version":3,"names":["useFountainPay","FountainPayProvider","useFPStore","getFPStore","isBanksCacheValid","isTokenValid"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAASA,cAAc,QAAQ,qBAAkB;;AAEjD;AACA,SAASC,mBAAmB,QAAQ,0BAAuB;AAE3D,SACEC,UAAU,EACVC,UAAU,EACVC,iBAAiB,EACjBC,YAAY,QACP,oBAAiB;;AAExB","ignoreList":[]}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+
3
+ // ─────────────────────────────────────────────────────────────────────────────
4
+ // FPStore — SDK-internal Zustand store with persistence
5
+ //
6
+ // Stores: access token, user info, wallet/account details, bank list cache.
7
+ // Persisted to AsyncStorage under the key '@fp_store' so it survives
8
+ // app restarts without hitting the backend again.
9
+ //
10
+ // Usage (inside SDK only — never exported to host app):
11
+ // import { useFPStore, getFPStore, setFPStore } from '../store/FPStore';
12
+ // const token = getFPStore().accessToken;
13
+ // setFPStore({ accessToken: 'abc123' });
14
+ // ─────────────────────────────────────────────────────────────────────────────
15
+
16
+ import { create } from 'zustand';
17
+ import { persist, createJSONStorage } from 'zustand/middleware';
18
+ import AsyncStorage from '@react-native-async-storage/async-storage';
19
+
20
+ // ── State shape ───────────────────────────────────────────────────────────────
21
+
22
+ // ── Actions shape ─────────────────────────────────────────────────────────────
23
+
24
+ // ── Initial state ─────────────────────────────────────────────────────────────
25
+
26
+ const initialState = {
27
+ accessToken: null,
28
+ tokenExpiresAt: null,
29
+ user: null,
30
+ accountDetails: null,
31
+ banks: [],
32
+ balance: null,
33
+ balanceFetchedAt: null,
34
+ banksFetchedAt: null,
35
+ isAuthenticated: false,
36
+ authError: null,
37
+ psspId: null,
38
+ account: null,
39
+ lastBroadcastPosition: null
40
+ };
41
+
42
+ // ── Store ─────────────────────────────────────────────────────────────────────
43
+
44
+ export const useFPStore = create()(persist((set, get) => ({
45
+ ...initialState,
46
+ setAccessToken: (token, expiresInSeconds) => set({
47
+ accessToken: token,
48
+ tokenExpiresAt: expiresInSeconds ? Date.now() + expiresInSeconds * 1000 : null
49
+ }),
50
+ clearAccessToken: () => set({
51
+ accessToken: null,
52
+ tokenExpiresAt: null
53
+ }),
54
+ setUser: user => set({
55
+ user
56
+ }),
57
+ clearUser: () => set({
58
+ user: null
59
+ }),
60
+ setAccountDetails: accountDetails => set({
61
+ accountDetails
62
+ }),
63
+ setBalance: balance => set({
64
+ balance,
65
+ balanceFetchedAt: Date.now()
66
+ }),
67
+ clearBalance: () => set({
68
+ balance: null,
69
+ balanceFetchedAt: null
70
+ }),
71
+ setBanks: banks => set({
72
+ banks,
73
+ banksFetchedAt: Date.now()
74
+ }),
75
+ setAuthenticated: (value, error = null) => set({
76
+ isAuthenticated: value,
77
+ authError: error
78
+ }),
79
+ setPsspId: id => set({
80
+ psspId: id
81
+ }),
82
+ setAccount: account => set({
83
+ account
84
+ }),
85
+ clearAccount: () => set({
86
+ psspId: null,
87
+ account: null,
88
+ balance: null,
89
+ balanceFetchedAt: null
90
+ }),
91
+ setLastBroadcastPosition: pos => set({
92
+ lastBroadcastPosition: pos
93
+ }),
94
+ reset: () => set(initialState)
95
+ }), {
96
+ name: '@fp_store',
97
+ // AsyncStorage key
98
+ storage: createJSONStorage(() => AsyncStorage),
99
+ // Only persist data that should survive app restarts.
100
+ // Omit runtime-only flags that should reset each session.
101
+ partialize: state => ({
102
+ accessToken: state.accessToken,
103
+ tokenExpiresAt: state.tokenExpiresAt,
104
+ user: state.user,
105
+ accountDetails: state.accountDetails,
106
+ banks: state.banks,
107
+ banksFetchedAt: state.banksFetchedAt,
108
+ psspId: state.psspId,
109
+ account: state.account,
110
+ balance: state.balance,
111
+ balanceFetchedAt: state.balanceFetchedAt,
112
+ lastBroadcastPosition: state.lastBroadcastPosition
113
+ // isAuthenticated and authError are NOT persisted —
114
+ // the API key must be verified fresh each session
115
+ })
116
+ }));
117
+
118
+ // ── Helpers for use outside React components (e.g. FPEngine) ─────────────────
119
+
120
+ /** Read current store state without subscribing */
121
+ export const getFPStore = () => useFPStore.getState();
122
+
123
+ /** Update store state without subscribing */
124
+ export const setFPStore = partial => useFPStore.setState(partial);
125
+
126
+ // ── Cache validity helpers ────────────────────────────────────────────────────
127
+
128
+ const WALLET_CACHE_TTL = 5 * 60 * 1000; // 5 minutes
129
+ const BANKS_CACHE_TTL = 24 * 60 * 60 * 1000; // 24 hours
130
+ const BALANCE_CACHE_TTL = 2 * 60 * 1000; // 2 minutes
131
+
132
+ export function isBanksCacheValid() {
133
+ const {
134
+ banksFetchedAt
135
+ } = getFPStore();
136
+ if (!banksFetchedAt) return false;
137
+ return Date.now() - banksFetchedAt < BANKS_CACHE_TTL;
138
+ }
139
+ export function isTokenValid() {
140
+ const {
141
+ accessToken,
142
+ tokenExpiresAt
143
+ } = getFPStore();
144
+ if (!accessToken) return false;
145
+ if (!tokenExpiresAt) return true; // no expiry info — assume valid
146
+ return Date.now() < tokenExpiresAt - 60000; // 60s buffer before expiry
147
+ }
148
+ export function isBalanceCacheValid() {
149
+ const {
150
+ balanceFetchedAt
151
+ } = getFPStore();
152
+ if (!balanceFetchedAt) return false;
153
+ return Date.now() - balanceFetchedAt < BALANCE_CACHE_TTL;
154
+ }
155
+ //# sourceMappingURL=FPStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["create","persist","createJSONStorage","AsyncStorage","initialState","accessToken","tokenExpiresAt","user","accountDetails","banks","balance","balanceFetchedAt","banksFetchedAt","isAuthenticated","authError","psspId","account","lastBroadcastPosition","useFPStore","set","get","setAccessToken","token","expiresInSeconds","Date","now","clearAccessToken","setUser","clearUser","setAccountDetails","setBalance","clearBalance","setBanks","setAuthenticated","value","error","setPsspId","id","setAccount","clearAccount","setLastBroadcastPosition","pos","reset","name","storage","partialize","state","getFPStore","getState","setFPStore","partial","setState","WALLET_CACHE_TTL","BANKS_CACHE_TTL","BALANCE_CACHE_TTL","isBanksCacheValid","isTokenValid","isBalanceCacheValid"],"sourceRoot":"../../../src","sources":["store/FPStore.ts"],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- import { useEffect, useRef } from "react";
4
- import { Animated, Easing } from "react-native";
5
- import styled from "styled-components/native";
3
+ import { useEffect, useRef } from 'react';
4
+ import { Animated, Easing } from 'react-native';
5
+ import styled from 'styled-components/native';
6
6
 
7
7
  // Animated Dots Component
8
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","Animated","Easing","styled","jsx","_jsx","jsxs","_jsxs","DotsContainer","View","Dot","AnimatedDots","dot1","Value","current","dot2","dot3","AnimatedDot","createAnimatedComponent","animateDot","dot","delay","loop","sequence","timing","toValue","duration","easing","ease","useNativeDriver","animations","parallel","start","stop","dotStyle","animValue","opacity","interpolate","inputRange","outputRange","transform","scale","children","style"],"sourceRoot":"../../../../src","sources":["ui/components/AnimatedDots.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","Animated","Easing","styled","jsx","_jsx","jsxs","_jsxs","DotsContainer","View","Dot","AnimatedDots","dot1","Value","current","dot2","dot3","AnimatedDot","createAnimatedComponent","animateDot","dot","delay","loop","sequence","timing","toValue","duration","easing","ease","useNativeDriver","animations","parallel","start","stop","dotStyle","animValue","opacity","interpolate","inputRange","outputRange","transform","scale","children","style"],"sourceRoot":"../../../../src","sources":["ui/components/AnimatedDots.tsx"],"mappings":"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","ignoreList":[]}