react-native-fpay 0.4.20 → 0.4.21
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/lib/module/FountainPayProvider.js +50 -126
- package/lib/module/FountainPayProvider.js.map +1 -1
- package/lib/module/core/api/client.js +1 -1
- package/lib/module/core/api/index.js +16 -13
- package/lib/module/core/api/index.js.map +1 -1
- package/lib/module/core/types/index.js +1 -1
- package/lib/module/core/types/index.js.map +1 -1
- package/lib/module/engine/FPEngine.js +27 -17
- package/lib/module/engine/FPEngine.js.map +1 -1
- package/lib/module/store/FPStore.js +11 -4
- package/lib/module/store/FPStore.js.map +1 -1
- package/lib/module/ui/components/ConfirmScreen.js +2 -2
- package/lib/module/ui/components/ConfirmScreen.js.map +1 -1
- package/lib/module/ui/modals/FPCreatePin.js +234 -0
- package/lib/module/ui/modals/FPCreatePin.js.map +1 -0
- package/lib/module/ui/modals/FPShell.js +7 -3
- package/lib/module/ui/modals/FPShell.js.map +1 -1
- package/lib/module/ui/modals/FPValidateBvn.js +258 -0
- package/lib/module/ui/modals/FPValidateBvn.js.map +1 -0
- package/lib/module/ui/screens/ResultScreen.js +4 -17
- package/lib/module/ui/screens/ResultScreen.js.map +1 -1
- package/lib/module/ui/screens/SendScreen.js +24 -9
- package/lib/module/ui/screens/SendScreen.js.map +1 -1
- package/lib/module/ui/screens/sub/sendPayment/ProximitySubScreen.js +3 -3
- package/lib/module/ui/screens/sub/sendPayment/ProximitySubScreen.js.map +1 -1
- package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js +8 -1
- package/lib/module/ui/screens/sub/sendPayment/TransferSubScreen.js.map +1 -1
- package/lib/typescript/src/FountainPayProvider.d.ts +3 -4
- package/lib/typescript/src/FountainPayProvider.d.ts.map +1 -1
- package/lib/typescript/src/core/api/index.d.ts +20 -21
- package/lib/typescript/src/core/api/index.d.ts.map +1 -1
- package/lib/typescript/src/core/types/index.d.ts +16 -6
- package/lib/typescript/src/core/types/index.d.ts.map +1 -1
- package/lib/typescript/src/engine/FPEngine.d.ts +3 -0
- package/lib/typescript/src/engine/FPEngine.d.ts.map +1 -1
- package/lib/typescript/src/store/FPStore.d.ts +8 -5
- package/lib/typescript/src/store/FPStore.d.ts.map +1 -1
- package/lib/typescript/src/ui/components/ConfirmScreen.d.ts +1 -2
- package/lib/typescript/src/ui/components/ConfirmScreen.d.ts.map +1 -1
- package/lib/typescript/src/ui/modals/FPCreatePin.d.ts +3 -0
- package/lib/typescript/src/ui/modals/FPCreatePin.d.ts.map +1 -0
- package/lib/typescript/src/ui/modals/FPShell.d.ts.map +1 -1
- package/lib/typescript/src/ui/modals/FPValidateBvn.d.ts +3 -0
- package/lib/typescript/src/ui/modals/FPValidateBvn.d.ts.map +1 -0
- package/lib/typescript/src/ui/screens/ResultScreen.d.ts.map +1 -1
- package/lib/typescript/src/ui/screens/SendScreen.d.ts.map +1 -1
- package/lib/typescript/src/ui/screens/sub/sendPayment/TransferSubScreen.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/FountainPayProvider.tsx +59 -149
- package/src/core/api/client.ts +1 -1
- package/src/core/api/index.ts +54 -54
- package/src/core/types/index.ts +18 -5
- package/src/engine/FPEngine.ts +33 -20
- package/src/store/FPStore.ts +15 -8
- package/src/ui/components/ConfirmScreen.tsx +4 -3
- package/src/ui/modals/FPCreatePin.tsx +206 -0
- package/src/ui/modals/FPShell.tsx +16 -2
- package/src/ui/modals/FPValidateBvn.tsx +229 -0
- package/src/ui/screens/ResultScreen.tsx +6 -10
- package/src/ui/screens/SendScreen.tsx +60 -36
- package/src/ui/screens/sub/sendPayment/ProximitySubScreen.tsx +3 -3
- package/src/ui/screens/sub/sendPayment/TransferSubScreen.tsx +7 -1
|
@@ -8,16 +8,16 @@
|
|
|
8
8
|
// the SAME instance — no re-initialization, no prop drilling.
|
|
9
9
|
//
|
|
10
10
|
// Usage:
|
|
11
|
-
// <FountainPayProvider
|
|
11
|
+
// <FountainPayProvider appId="...">
|
|
12
12
|
// <YourApp />
|
|
13
13
|
// </FountainPayProvider>
|
|
14
14
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
15
15
|
import { createContext, useContext, useEffect, useMemo, useRef } from 'react';
|
|
16
16
|
import { FPShell } from "./ui/modals/FPShell.js";
|
|
17
|
-
import { useFPStore, getFPStore
|
|
17
|
+
import { useFPStore, getFPStore } from "./store/FPStore.js";
|
|
18
18
|
import { FPEngine } from "./engine/FPEngine.js";
|
|
19
19
|
import { initClient } from "./core/api/client.js";
|
|
20
|
-
import { authenticateAPI, transferAPI } from "./core/api/index.js";
|
|
20
|
+
import { accountAPI, authenticateAPI, transferAPI } from "./core/api/index.js";
|
|
21
21
|
|
|
22
22
|
// ── Context ───────────────────────────────────────────────────────────────────
|
|
23
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
@@ -37,16 +37,14 @@ const FountainPayContext = /*#__PURE__*/createContext(null);
|
|
|
37
37
|
export function useFountainPay() {
|
|
38
38
|
const instance = useContext(FountainPayContext);
|
|
39
39
|
if (!instance) {
|
|
40
|
-
throw new Error('[FountainPay] useFountainPay() must be called inside <FountainPayProvider>.\n' + 'Make sure you have wrapped your app root with <FountainPayProvider
|
|
40
|
+
throw new Error('[FountainPay] useFountainPay() must be called inside <FountainPayProvider>.\n' + 'Make sure you have wrapped your app root with <FountainPayProvider appId="...">.');
|
|
41
41
|
}
|
|
42
42
|
return instance;
|
|
43
43
|
}
|
|
44
|
-
|
|
45
44
|
// ── Provider ──────────────────────────────────────────────────────────────────
|
|
46
45
|
|
|
47
46
|
export function FountainPayProvider({
|
|
48
|
-
|
|
49
|
-
accessToken,
|
|
47
|
+
appId,
|
|
50
48
|
options,
|
|
51
49
|
children,
|
|
52
50
|
onAuthReady,
|
|
@@ -61,20 +59,16 @@ export function FountainPayProvider({
|
|
|
61
59
|
const account = useFPStore(s => s.account);
|
|
62
60
|
const user = useFPStore(s => s.user);
|
|
63
61
|
const balance = useFPStore(s => s.balance);
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
62
|
+
const resetToken = useFPStore(s => s.clearAccessToken);
|
|
63
|
+
const clearUser = useFPStore(s => s.clearUser);
|
|
67
64
|
useEffect(() => {
|
|
68
65
|
let cancelled = false;
|
|
69
66
|
|
|
70
67
|
// Make sure client is initialized before any API call
|
|
71
68
|
console.log('[FountainPay] Provider mounted. HTTP client ready.', options);
|
|
72
69
|
if (!clientBooted.current) {
|
|
73
|
-
if (
|
|
74
|
-
getFPStore().
|
|
75
|
-
}
|
|
76
|
-
if (apiKey) {
|
|
77
|
-
getFPStore().setApiKey(apiKey); // ← store it
|
|
70
|
+
if (appId) {
|
|
71
|
+
getFPStore().setAppId(appId); // ← store it
|
|
78
72
|
}
|
|
79
73
|
initClient({
|
|
80
74
|
baseUrl: options?.baseUrl,
|
|
@@ -85,95 +79,52 @@ export function FountainPayProvider({
|
|
|
85
79
|
const authenticate = async () => {
|
|
86
80
|
// await resetToken();
|
|
87
81
|
// await clearUser();
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
onAuthError?.('accessToken is required for AGENT mode');
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
try {
|
|
97
|
-
console.log('[FountainPay] Agent mode — validating token...');
|
|
98
|
-
|
|
99
|
-
// Store the token first so the HTTP interceptor picks it up
|
|
100
|
-
getFPStore().setAccessToken(accessToken);
|
|
101
|
-
|
|
102
|
-
// Fetch agent profile from backend
|
|
103
|
-
const response = await authenticateAPI.validateToken();
|
|
104
|
-
if (cancelled) return;
|
|
105
|
-
if (response.status) {
|
|
106
|
-
const agent = response.payload;
|
|
107
|
-
|
|
108
|
-
// Build FPUserInfo from agent model
|
|
109
|
-
const user = {
|
|
110
|
-
firstName: agent.firstName,
|
|
111
|
-
lastName: agent.lastName,
|
|
112
|
-
email: agent.email,
|
|
113
|
-
phone: agent.phone ?? '',
|
|
114
|
-
bvn: agent.bvn,
|
|
115
|
-
userId: agent.id
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
// Build FPAccount from agent model
|
|
119
|
-
const account = {
|
|
120
|
-
id: agent.id,
|
|
121
|
-
firstName: agent.firstName,
|
|
122
|
-
lastName: agent.lastName,
|
|
123
|
-
phone: agent.phone,
|
|
124
|
-
accountName: `${agent.firstName} ${agent.lastName}`.toUpperCase(),
|
|
125
|
-
accountNumber: agent.accountNumber,
|
|
126
|
-
bankName: agent.bankName,
|
|
127
|
-
bankCode: agent.bankCode // populate if backend returns it
|
|
128
|
-
};
|
|
129
|
-
|
|
130
|
-
// Store everything — no need to call _resolveAccount
|
|
131
|
-
getFPStore().setUser(user);
|
|
132
|
-
getFPStore().setPsspId(agent.id);
|
|
133
|
-
getFPStore().setAccount(account);
|
|
134
|
-
await getFPStore().setAccessToken(accessToken, 86400);
|
|
135
|
-
const banks = await transferAPI.getBanks();
|
|
136
|
-
if (banks.status) {
|
|
137
|
-
getFPStore().setBanks(banks.payload);
|
|
138
|
-
console.log('[FountainPay] Banks cached:', banks.payload.length);
|
|
139
|
-
}
|
|
140
|
-
setAuthenticated(true);
|
|
141
|
-
console.log('[FountainPay] Agent validated:', agent.firstName, agent.lastName);
|
|
142
|
-
onAuthReady?.();
|
|
143
|
-
} else {
|
|
144
|
-
getFPStore().clearAccessToken();
|
|
145
|
-
setAuthenticated(false, response.message);
|
|
146
|
-
onAuthError?.(response.message);
|
|
147
|
-
}
|
|
148
|
-
} catch (err) {
|
|
149
|
-
if (cancelled) return;
|
|
150
|
-
getFPStore().clearAccessToken();
|
|
151
|
-
setAuthenticated(false, err.message);
|
|
152
|
-
onAuthError?.(err.message);
|
|
153
|
-
}
|
|
154
|
-
return; // ← don't fall through to PSSP auth
|
|
155
|
-
}
|
|
156
|
-
if (isTokenValid()) {
|
|
157
|
-
console.log('[FountainPay] Valid token found — skipping auth.');
|
|
158
|
-
setAuthenticated(true);
|
|
159
|
-
onAuthReady?.();
|
|
82
|
+
if (!appId) {
|
|
83
|
+
console.log('[FountainPay] No appId — new user flow. Waiting for initializeSDK.');
|
|
84
|
+
// Boot client without token — initializeSDK will handle everything
|
|
85
|
+
setAuthenticated(false);
|
|
86
|
+
onAuthReady?.(null);
|
|
160
87
|
return;
|
|
161
88
|
}
|
|
162
89
|
try {
|
|
163
90
|
console.log('[FountainPay] Verifying API key...');
|
|
164
|
-
const response = await authenticateAPI.login(
|
|
91
|
+
const response = await authenticateAPI.login(appId);
|
|
165
92
|
if (cancelled) return;
|
|
166
93
|
if (response.status) {
|
|
167
94
|
console.log('[FountainPay] Auth successful.');
|
|
168
|
-
|
|
169
|
-
|
|
95
|
+
const {
|
|
96
|
+
access_token,
|
|
97
|
+
expires_in
|
|
98
|
+
} = response.payload;
|
|
99
|
+
|
|
100
|
+
// Store token
|
|
101
|
+
getFPStore().setAccessToken(access_token, expires_in ?? 86400);
|
|
102
|
+
const agentDetails = await authenticateAPI.profile();
|
|
103
|
+
if (agentDetails.status) {}
|
|
104
|
+
|
|
105
|
+
// Build and store user
|
|
106
|
+
const user = agentDetails;
|
|
107
|
+
getFPStore().setUser(user);
|
|
108
|
+
getFPStore().setPsspId(agentDetails.uuid);
|
|
109
|
+
const agentAccount = await accountAPI.getAccount();
|
|
110
|
+
// Build and store account
|
|
111
|
+
const account = {
|
|
112
|
+
id: agentAccount.uuid,
|
|
113
|
+
ownerId: agentAccount.ownerId,
|
|
114
|
+
ownerType: agentAccount.ownerType,
|
|
115
|
+
accountName: agentAccount.accountName,
|
|
116
|
+
accountNumber: agentAccount.accountNumber,
|
|
117
|
+
bankName: agentAccount.bankName,
|
|
118
|
+
bankCode: agentAccount.bankCode,
|
|
119
|
+
currency: agentAccount.currency
|
|
120
|
+
};
|
|
121
|
+
getFPStore().setAccount(account);
|
|
122
|
+
try {
|
|
170
123
|
const banks = await transferAPI.getBanks();
|
|
171
|
-
if (banks.status)
|
|
172
|
-
|
|
173
|
-
}
|
|
174
|
-
}
|
|
124
|
+
if (banks.status) getFPStore().setBanks(banks.payload);
|
|
125
|
+
} catch {/* non-fatal */}
|
|
175
126
|
setAuthenticated(true);
|
|
176
|
-
onAuthReady?.();
|
|
127
|
+
onAuthReady?.(account);
|
|
177
128
|
} else {
|
|
178
129
|
console.error('[FountainPay] Auth failed:', response.message);
|
|
179
130
|
setAuthenticated(false, response.message);
|
|
@@ -186,44 +137,17 @@ export function FountainPayProvider({
|
|
|
186
137
|
onAuthError?.(err.message);
|
|
187
138
|
}
|
|
188
139
|
};
|
|
189
|
-
console.log('Calling authentication');
|
|
140
|
+
console.log('Calling authentication with appId:', appId);
|
|
190
141
|
authenticate();
|
|
191
142
|
return () => {
|
|
192
143
|
cancelled = true;
|
|
193
144
|
};
|
|
194
|
-
}, [
|
|
195
|
-
useEffect(() => {
|
|
196
|
-
if (options?.userType !== 'AGENT') return;
|
|
197
|
-
if (!isAuthenticated) return;
|
|
198
|
-
const autoInitialize = async () => {
|
|
199
|
-
const store = getFPStore();
|
|
200
|
-
if (!store.user || !store.account) return;
|
|
201
|
-
console.log('[FountainPay] Agent mode — auto-initializing from stored data...');
|
|
202
|
-
await FPEngine.initialize(store.user, options ?? {}, {} // empty callbacks — host app sets these via initializeSDK if they want
|
|
203
|
-
);
|
|
204
|
-
console.log('[FountainPay] Agent auto-initialized.');
|
|
205
|
-
};
|
|
206
|
-
autoInitialize();
|
|
207
|
-
}, [isAuthenticated, options?.userType]);
|
|
208
|
-
|
|
209
|
-
// Build the instance once per provider lifetime.
|
|
210
|
-
// All components that call useFountainPay() share this exact object.
|
|
145
|
+
}, [appId]);
|
|
211
146
|
const instance = useMemo(() => {
|
|
212
|
-
console.log('[FountainPay] Creating shared FPInstance for
|
|
147
|
+
console.log('[FountainPay] Creating shared FPInstance for appId:', appId?.toString().slice(0, 8) + '...');
|
|
213
148
|
return {
|
|
214
|
-
/**
|
|
215
|
-
* Call once after the user logs in.
|
|
216
|
-
* Starts BLE advertising, proximity broadcast, and the payment listener.
|
|
217
|
-
*/
|
|
218
149
|
async initializeSDK(user, callbacks) {
|
|
219
150
|
console.log('[FountainPay] initializeSDK() called for user:', user.firstName);
|
|
220
|
-
if (options?.userType === 'AGENT') {
|
|
221
|
-
if (callbacks) {
|
|
222
|
-
FPEngine.updateCallbacks(callbacks); // just register callbacks
|
|
223
|
-
}
|
|
224
|
-
console.log('[FountainPay] Agent already initialized — callbacks updated.');
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
151
|
try {
|
|
228
152
|
await FPEngine.initialize(user, options ?? {}, {
|
|
229
153
|
...callbacks,
|
|
@@ -306,7 +230,7 @@ export function FountainPayProvider({
|
|
|
306
230
|
return balance;
|
|
307
231
|
}
|
|
308
232
|
};
|
|
309
|
-
}, [
|
|
233
|
+
}, [appId, isAuthenticated, authError, account, user, balance]);
|
|
310
234
|
return /*#__PURE__*/_jsxs(FountainPayContext.Provider, {
|
|
311
235
|
value: instance,
|
|
312
236
|
children: [children, /*#__PURE__*/_jsx(FPShell, {})]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useContext","useEffect","useMemo","useRef","FPShell","useFPStore","getFPStore","
|
|
1
|
+
{"version":3,"names":["createContext","useContext","useEffect","useMemo","useRef","FPShell","useFPStore","getFPStore","FPEngine","initClient","accountAPI","authenticateAPI","transferAPI","jsx","_jsx","jsxs","_jsxs","FountainPayContext","useFountainPay","instance","Error","FountainPayProvider","appId","options","children","onAuthReady","onAuthError","clientBooted","isAuthenticated","s","authError","setAuthenticated","account","user","balance","resetToken","clearAccessToken","clearUser","cancelled","console","log","current","setAppId","baseUrl","environment","authenticate","response","login","status","access_token","expires_in","payload","setAccessToken","agentDetails","profile","setUser","setPsspId","uuid","agentAccount","getAccount","id","ownerId","ownerType","accountName","accountNumber","bankName","bankCode","currency","setAccount","banks","getBanks","setBanks","error","message","err","toString","slice","initializeSDK","callbacks","firstName","initialize","onPaymentSent","tx","refreshBalance","onError","setAccountDetails","send","amount","balancePayload","Number","getCallbacks","code","showSend","receive","showReceive","generateAccountNumber","generateAccount","listen","startListening","destroy","isReady","currentUser","Provider","value"],"sourceRoot":"../../src","sources":["FountainPayProvider.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import axios from 'axios';
|
|
8
8
|
import { getFPStore } from "../../store/FPStore.js";
|
|
9
|
-
const DEFAULT_BASE_URL = 'https://kenisha-happiest-nan.ngrok-free.dev/modal/sdk/v1/
|
|
9
|
+
const DEFAULT_BASE_URL = 'https://kenisha-happiest-nan.ngrok-free.dev/modal/sdk/v1/fpay/';
|
|
10
10
|
let _client = null;
|
|
11
11
|
let _isRefreshing = false;
|
|
12
12
|
let _retryQueue = [];
|
|
@@ -2,23 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
// FountainPay SDK — All API calls
|
|
4
4
|
import { http } from "./client.js";
|
|
5
|
+
import { BUSINESSID } from "../types/index.js";
|
|
5
6
|
export const healthAPI = {
|
|
6
7
|
ping: () => http().get('/health').then(r => r.data)
|
|
7
8
|
};
|
|
8
9
|
export const authenticateAPI = {
|
|
9
|
-
login:
|
|
10
|
-
|
|
10
|
+
login: appId => http().post('/auth', {
|
|
11
|
+
user_id: appId
|
|
11
12
|
}).then(r => r.data),
|
|
12
|
-
profile:
|
|
13
|
+
profile: () => http().get(`/get-user-details`).then(r => r.data.payload),
|
|
13
14
|
logout: () => http().post('/auth/logout').then(r => r.data),
|
|
14
15
|
validateOtp: (otp, email) => http().post('/verify-otp', {
|
|
15
16
|
otp,
|
|
16
17
|
email
|
|
17
18
|
}).then(r => r.data),
|
|
18
|
-
validateToken: () => http().get('/auth/agent/validate-token').then(r => r.data)
|
|
19
|
+
validateToken: () => http().get('/auth/agent/validate-token').then(r => r.data),
|
|
20
|
+
sendSmsOtp: async payload => http().post("shared/send-sms-otp", payload).then(r => r.data),
|
|
21
|
+
verifyBvn: async () => http().get("verify-bvn").then(r => r.data),
|
|
22
|
+
verifySms: async payload => http().post("verify-bvn", payload).then(r => r.data),
|
|
23
|
+
updateProfile: async payload => http().put("update-user-agent", payload).then(r => r.data)
|
|
19
24
|
};
|
|
20
25
|
export const accountAPI = {
|
|
21
|
-
generate: user => http().post('/
|
|
26
|
+
generate: user => http().post('/auth/create-agent', {
|
|
27
|
+
business_id: BUSINESSID,
|
|
22
28
|
first_name: user.firstName,
|
|
23
29
|
last_name: user.lastName,
|
|
24
30
|
phone_no: user.phone,
|
|
@@ -27,13 +33,9 @@ export const accountAPI = {
|
|
|
27
33
|
nin: user.nin ?? '',
|
|
28
34
|
dateOfBirth: user.dateOfBirth ?? ''
|
|
29
35
|
}).then(r => r.data.payload),
|
|
30
|
-
// Get user profile using PSSP id
|
|
31
|
-
getUser: psspId => http().get(`/get-user-details/${psspId}`).then(r => r.data.payload),
|
|
32
36
|
// Get account details using PSSP id
|
|
33
|
-
getAccount:
|
|
34
|
-
getAgentBalance:
|
|
35
|
-
// Get balance using PSSP id
|
|
36
|
-
getBalance: psspId => http().get(`/get-balance/${psspId}`).then(r => r.data.payload)
|
|
37
|
+
getAccount: () => http().get(`/get-accounts-details`).then(r => r.data.payload),
|
|
38
|
+
getAgentBalance: () => http().get(`/get-balance`).then(r => r.data.payload)
|
|
37
39
|
};
|
|
38
40
|
export const transferAPI = {
|
|
39
41
|
getBanks: () => http().get('/get-banks').then(r => r.data),
|
|
@@ -44,9 +46,10 @@ export const transferAPI = {
|
|
|
44
46
|
verifyWalletAccount: accountNumber => http().post('/wallet-name-enquiry', {
|
|
45
47
|
account_number: accountNumber
|
|
46
48
|
}).then(r => r.data),
|
|
47
|
-
validateTransfer: (pin, userId) => http().post('/validate-transaction', {
|
|
49
|
+
validateTransfer: (pin, userId, receiverId) => http().post('/validate-transaction', {
|
|
48
50
|
pin,
|
|
49
|
-
|
|
51
|
+
sender_type: 'AGENT',
|
|
52
|
+
receiver_id: receiverId
|
|
50
53
|
}).then(r => r.data),
|
|
51
54
|
sendToWallet: (payload, temptId) => http().post('/wallet-transfer-funds', {
|
|
52
55
|
...payload,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["http","healthAPI","ping","get","then","r","data","authenticateAPI","login","
|
|
1
|
+
{"version":3,"names":["http","BUSINESSID","healthAPI","ping","get","then","r","data","authenticateAPI","login","appId","post","user_id","profile","payload","logout","validateOtp","otp","email","validateToken","sendSmsOtp","verifyBvn","verifySms","updateProfile","put","accountAPI","generate","user","business_id","first_name","firstName","last_name","lastName","phone_no","phone","bvn","nin","dateOfBirth","getAccount","getAgentBalance","transferAPI","getBanks","verifyAccount","accountNumber","bankCode","account_no","institution_code","verifyWalletAccount","account_number","validateTransfer","pin","userId","receiverId","sender_type","receiver_id","sendToWallet","temptId","temp_id","sendToBank","status","reference","verify","nqrAPI","pay","nfcAPI","proximityAPI","broadcast","psspId","heartbeat","sessionId","lat","lng","patch","latitude","longitude","unregister","delete","discover","radius_meters"],"sourceRoot":"../../../../src","sources":["core/api/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["core/types/index.ts"],"mappings":";;AAAA;;
|
|
1
|
+
{"version":3,"names":["BUSINESSID"],"sourceRoot":"../../../../src","sources":["core/types/index.ts"],"mappings":";;AAAA;;AAIA,OAAO,MAAMA,UAAU,GAAG,sCAAsC;AA+E/D","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ 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, accountAPI } from "../core/api/index.js";
|
|
11
|
+
import { proximityAPI, accountAPI, authenticateAPI } from "../core/api/index.js";
|
|
12
12
|
import BLEReceiverService from "./BLEReceiverService.js";
|
|
13
13
|
import BLESenderService from "./BLESenderService.js";
|
|
14
14
|
import { getFPStore, isBalanceCacheValid } from "../store/FPStore.js";
|
|
@@ -88,7 +88,7 @@ async function _startProximityBroadcast() {
|
|
|
88
88
|
const session = await proximityAPI.broadcast(psspId, {
|
|
89
89
|
latitude: loc.lat,
|
|
90
90
|
longitude: loc.lng,
|
|
91
|
-
user_type: '
|
|
91
|
+
user_type: 'AGENT'
|
|
92
92
|
});
|
|
93
93
|
|
|
94
94
|
// Save new position to store
|
|
@@ -114,7 +114,7 @@ async function _startProximityBroadcast() {
|
|
|
114
114
|
await proximityAPI.broadcast(psspId, {
|
|
115
115
|
latitude: current.lat,
|
|
116
116
|
longitude: current.lng,
|
|
117
|
-
user_type: '
|
|
117
|
+
user_type: 'AGENT'
|
|
118
118
|
});
|
|
119
119
|
getFPStore().setLastBroadcastPosition({
|
|
120
120
|
latitude: current.lat,
|
|
@@ -229,13 +229,14 @@ async function _handleIncomingRequest(req, deviceId) {
|
|
|
229
229
|
async function _resolveAccount(user, callbacks) {
|
|
230
230
|
const store = getFPStore();
|
|
231
231
|
const psspId = user.userId || store.psspId;
|
|
232
|
-
console.log('[FPay Engine] _resolveAccount callbacks:', 'onAccountReady:', !!callbacks.onAccountReady, 'onAccountError:', !!callbacks.onAccountError);
|
|
232
|
+
console.log('[FPay Engine] _resolveAccount callbacks:', 'onAccountReady:', !!callbacks.onAccountReady, 'onAccountError:', !!callbacks.onAccountError, 'user: ', user, 'psspId:', psspId, 'user.userId:', user.userId, 'store.psspId:', store.psspId);
|
|
233
233
|
try {
|
|
234
234
|
if (psspId) {
|
|
235
235
|
// ← use the saved value, not store.psspId
|
|
236
|
+
|
|
236
237
|
console.log('[FPay Engine] Existing PSSP id found — fetching account...');
|
|
237
238
|
try {
|
|
238
|
-
const account = await accountAPI.getAccount(
|
|
239
|
+
const account = await accountAPI.getAccount();
|
|
239
240
|
store.setAccount(account);
|
|
240
241
|
store.setUser(user);
|
|
241
242
|
console.log('[FPay Engine] Account loaded:', account);
|
|
@@ -273,8 +274,7 @@ async function _fetchBalance() {
|
|
|
273
274
|
return;
|
|
274
275
|
}
|
|
275
276
|
try {
|
|
276
|
-
const
|
|
277
|
-
const balance = userType === 'AGENT' ? await accountAPI.getAgentBalance(psspId) : await accountAPI.getBalance(psspId);
|
|
277
|
+
const balance = await accountAPI.getAgentBalance();
|
|
278
278
|
getFPStore().setBalance(balance);
|
|
279
279
|
console.log('[FPay Engine] Balance fetched:', balance);
|
|
280
280
|
} catch (err) {
|
|
@@ -319,16 +319,6 @@ export const FPEngine = {
|
|
|
319
319
|
_isReady = true;
|
|
320
320
|
console.log('[FPay Engine] Initialized. Advertising as:', displayName);
|
|
321
321
|
|
|
322
|
-
// AGENT — account already stored by provider, skip resolve
|
|
323
|
-
if (options.userType === 'AGENT') {
|
|
324
|
-
const account = getFPStore().account;
|
|
325
|
-
if (account) {
|
|
326
|
-
callbacks.onAccountReady?.(account);
|
|
327
|
-
_fetchBalance();
|
|
328
|
-
}
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
|
|
332
322
|
// Resolve account first — sets psspId in store
|
|
333
323
|
// Then broadcast proximity — needs psspId to be set
|
|
334
324
|
await _resolveAccount(user, callbacks);
|
|
@@ -449,6 +439,26 @@ export const FPEngine = {
|
|
|
449
439
|
async refreshBalance() {
|
|
450
440
|
await _fetchBalance();
|
|
451
441
|
},
|
|
442
|
+
async verifyBvn() {
|
|
443
|
+
const response = await authenticateAPI.verifyBvn();
|
|
444
|
+
getFPStore().setTempId(response?.payload?.temp_id);
|
|
445
|
+
},
|
|
446
|
+
async verifySmsOtp(payload) {
|
|
447
|
+
const response = await authenticateAPI.verifySms(payload);
|
|
448
|
+
if (response.status) {
|
|
449
|
+
await authenticateAPI.updateProfile({
|
|
450
|
+
verifyBvn: true
|
|
451
|
+
});
|
|
452
|
+
const profile = await authenticateAPI.profile();
|
|
453
|
+
getFPStore().setUser(profile);
|
|
454
|
+
getFPStore().clearTempId();
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
async createUserTransactionPin(payload) {
|
|
458
|
+
await authenticateAPI.updateProfile(payload);
|
|
459
|
+
const profile = await authenticateAPI.profile();
|
|
460
|
+
getFPStore().setUser(profile);
|
|
461
|
+
},
|
|
452
462
|
closeSend() {
|
|
453
463
|
_emitEvent('close_send');
|
|
454
464
|
},
|