react-native-fpay 0.4.1 → 0.4.3
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.
|
@@ -47,7 +47,9 @@ export function useFountainPay() {
|
|
|
47
47
|
export function FountainPayProvider({
|
|
48
48
|
apiKey,
|
|
49
49
|
options,
|
|
50
|
-
children
|
|
50
|
+
children,
|
|
51
|
+
onAuthReady,
|
|
52
|
+
onAuthError
|
|
51
53
|
}) {
|
|
52
54
|
// Boot the HTTP client as soon as the provider mounts —
|
|
53
55
|
// this means generateAccountNumber works even before initializeSDK
|
|
@@ -77,6 +79,7 @@ export function FountainPayProvider({
|
|
|
77
79
|
if (isTokenValid()) {
|
|
78
80
|
console.log('[FountainPay] Valid token found — skipping auth.');
|
|
79
81
|
setAuthenticated(true);
|
|
82
|
+
onAuthReady?.();
|
|
80
83
|
return;
|
|
81
84
|
}
|
|
82
85
|
try {
|
|
@@ -93,14 +96,17 @@ export function FountainPayProvider({
|
|
|
93
96
|
}
|
|
94
97
|
}
|
|
95
98
|
setAuthenticated(true);
|
|
99
|
+
onAuthReady?.();
|
|
96
100
|
} else {
|
|
97
101
|
console.error('[FountainPay] Auth failed:', response.message);
|
|
98
102
|
setAuthenticated(false, response.message);
|
|
103
|
+
onAuthError?.(response.message);
|
|
99
104
|
}
|
|
100
105
|
} catch (err) {
|
|
101
106
|
if (cancelled) return;
|
|
102
107
|
console.error('[FountainPay] Auth error:', err.message);
|
|
103
108
|
setAuthenticated(false, err.message);
|
|
109
|
+
onAuthError?.(err.message);
|
|
104
110
|
}
|
|
105
111
|
};
|
|
106
112
|
console.log('Calling authentication');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","useContext","useEffect","useMemo","useRef","FPShell","useFPStore","getFPStore","isTokenValid","FPEngine","initClient","authenticateAPI","transferAPI","jsx","_jsx","jsxs","_jsxs","FountainPayContext","useFountainPay","instance","Error","FountainPayProvider","apiKey","options","children","clientBooted","isAuthenticated","s","authError","setAuthenticated","account","user","balance","console","log","cancelled","current","baseUrl","environment","authenticate","response","login","status","payload","access_token","setAccessToken","expires_in","banks","getBanks","setBanks","error","message","err","slice","initializeSDK","callbacks","firstName","initialize","onPaymentSent","tx","refreshBalance","onError","setAccountDetails","accountName","send","amount","currency","Number","getCallbacks","code","showSend","receive","showReceive","generateAccountNumber","generateAccount","listen","startListening","destroy","isReady","currentUser","Provider","value"],"sourceRoot":"../../src","sources":["FountainPayProvider.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAEEA,aAAa,EACbC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,MAAM,QACD,OAAO;AACd,SAASC,OAAO,QAAQ,wBAAqB;AAC7C,SAASC,UAAU,EAAEC,UAAU,EAAEC,YAAY,QAAQ,oBAAiB;AACtE,SAASC,QAAQ,QAAQ,sBAAmB;AAC5C,SAASC,UAAU,QAAQ,sBAAmB;AAU9C,SAASC,eAAe,EAAEC,WAAW,QAAQ,qBAAY;;AAEzD;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEA,MAAMC,kBAAkB,gBAAGjB,aAAa,CAAoB,IAAI,CAAC;;AAEjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASkB,cAAcA,CAAA,EAAe;EAC3C,MAAMC,QAAQ,GAAGlB,UAAU,CAACgB,kBAAkB,CAAC;EAC/C,IAAI,CAACE,QAAQ,EAAE;IACb,MAAM,IAAIC,KAAK,CACb,+EAA+E,GAC7E,mFACJ,CAAC;EACH;EACA,OAAOD,QAAQ;AACjB;;AAEA;;
|
|
1
|
+
{"version":3,"names":["createContext","useContext","useEffect","useMemo","useRef","FPShell","useFPStore","getFPStore","isTokenValid","FPEngine","initClient","authenticateAPI","transferAPI","jsx","_jsx","jsxs","_jsxs","FountainPayContext","useFountainPay","instance","Error","FountainPayProvider","apiKey","options","children","onAuthReady","onAuthError","clientBooted","isAuthenticated","s","authError","setAuthenticated","account","user","balance","console","log","cancelled","current","baseUrl","environment","authenticate","response","login","status","payload","access_token","setAccessToken","expires_in","banks","getBanks","setBanks","error","message","err","slice","initializeSDK","callbacks","firstName","initialize","onPaymentSent","tx","refreshBalance","onError","setAccountDetails","accountName","send","amount","currency","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":[]}
|
|
@@ -14,7 +14,9 @@ interface ProviderProps {
|
|
|
14
14
|
apiKey: string;
|
|
15
15
|
options?: FPSDKOptions;
|
|
16
16
|
children: ReactNode;
|
|
17
|
+
onAuthReady?: () => void;
|
|
18
|
+
onAuthError?: (error: string) => void;
|
|
17
19
|
}
|
|
18
|
-
export declare function FountainPayProvider({ apiKey, options, children, }: ProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
export declare function FountainPayProvider({ apiKey, options, children, onAuthReady, onAuthError, }: ProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
19
21
|
export {};
|
|
20
22
|
//# sourceMappingURL=FountainPayProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FountainPayProvider.d.ts","sourceRoot":"","sources":["../../../src/FountainPayProvider.tsx"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EACV,UAAU,EAEV,YAAY,EAKb,MAAM,cAAc,CAAC;AAStB;;;;;;;;GAQG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAS3C;AAID,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"FountainPayProvider.d.ts","sourceRoot":"","sources":["../../../src/FountainPayProvider.tsx"],"names":[],"mappings":"AAYA,OAAO,EACL,KAAK,SAAS,EAMf,MAAM,OAAO,CAAC;AAKf,OAAO,KAAK,EACV,UAAU,EAEV,YAAY,EAKb,MAAM,cAAc,CAAC;AAStB;;;;;;;;GAQG;AACH,wBAAgB,cAAc,IAAI,UAAU,CAS3C;AAID,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,wBAAgB,mBAAmB,CAAC,EAClC,MAAM,EACN,OAAO,EACP,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,EAAE,aAAa,2CA8Nf"}
|
package/package.json
CHANGED
|
@@ -65,12 +65,16 @@ interface ProviderProps {
|
|
|
65
65
|
apiKey: string;
|
|
66
66
|
options?: FPSDKOptions;
|
|
67
67
|
children: ReactNode;
|
|
68
|
+
onAuthReady?: () => void; // fires when auth succeeds
|
|
69
|
+
onAuthError?: (error: string) => void; // fires when auth fails
|
|
68
70
|
}
|
|
69
71
|
|
|
70
72
|
export function FountainPayProvider({
|
|
71
73
|
apiKey,
|
|
72
74
|
options,
|
|
73
75
|
children,
|
|
76
|
+
onAuthReady,
|
|
77
|
+
onAuthError,
|
|
74
78
|
}: ProviderProps) {
|
|
75
79
|
// Boot the HTTP client as soon as the provider mounts —
|
|
76
80
|
// this means generateAccountNumber works even before initializeSDK
|
|
@@ -107,6 +111,7 @@ export function FountainPayProvider({
|
|
|
107
111
|
if (isTokenValid()) {
|
|
108
112
|
console.log('[FountainPay] Valid token found — skipping auth.');
|
|
109
113
|
setAuthenticated(true);
|
|
114
|
+
onAuthReady?.();
|
|
110
115
|
return;
|
|
111
116
|
}
|
|
112
117
|
|
|
@@ -129,14 +134,17 @@ export function FountainPayProvider({
|
|
|
129
134
|
}
|
|
130
135
|
}
|
|
131
136
|
setAuthenticated(true);
|
|
137
|
+
onAuthReady?.();
|
|
132
138
|
} else {
|
|
133
139
|
console.error('[FountainPay] Auth failed:', response.message);
|
|
134
140
|
setAuthenticated(false, response.message);
|
|
141
|
+
onAuthError?.(response.message);
|
|
135
142
|
}
|
|
136
143
|
} catch (err: any) {
|
|
137
144
|
if (cancelled) return;
|
|
138
145
|
console.error('[FountainPay] Auth error:', err.message);
|
|
139
146
|
setAuthenticated(false, err.message);
|
|
147
|
+
onAuthError?.(err.message);
|
|
140
148
|
}
|
|
141
149
|
};
|
|
142
150
|
|