@@ -4,6 +4,26 @@ Object.defineProperty(exports, '__esModule', { value: true });
44
55var React = require ( 'react' ) ;
66
7+ function _interopNamespace ( e ) {
8+ if ( e && e . __esModule ) return e ;
9+ var n = Object . create ( null ) ;
10+ if ( e ) {
11+ Object . keys ( e ) . forEach ( function ( k ) {
12+ if ( k !== 'default' ) {
13+ var d = Object . getOwnPropertyDescriptor ( e , k ) ;
14+ Object . defineProperty ( n , k , d . get ? d : {
15+ enumerable : true ,
16+ get : function ( ) { return e [ k ] ; }
17+ } ) ;
18+ }
19+ } ) ;
20+ }
21+ n [ "default" ] = e ;
22+ return Object . freeze ( n ) ;
23+ }
24+
25+ var React__namespace = /*#__PURE__*/ _interopNamespace ( React ) ;
26+
727/**
828 * Check out {@link https://developer.flutterwave.com/docs/flutterwave-standard} for more information.
929 */
@@ -12,7 +32,7 @@ var types = /*#__PURE__*/Object.freeze({
1232 __proto__ : null
1333} ) ;
1434
15- /*! *****************************************************************************
35+ /******************************************************************************
1636Copyright (c) Microsoft Corporation.
1737
1838Permission to use, copy, modify, and/or distribute this software for any
@@ -66,7 +86,7 @@ function __generator(thisArg, body) {
6686 function verb ( n ) { return function ( v ) { return step ( [ n , v ] ) ; } ; }
6787 function step ( op ) {
6888 if ( f ) throw new TypeError ( "Generator is already executing." ) ;
69- while ( _ ) try {
89+ while ( g && ( g = 0 , op [ 0 ] && ( _ = 0 ) ) , _ ) try {
7090 if ( f = 1 , y && ( t = op [ 0 ] & 2 ? y [ "return" ] : op [ 0 ] ? y [ "throw" ] || ( ( t = y [ "return" ] ) && t . call ( y ) , 0 ) : y . next ) && ! ( t = t . call ( y , op [ 1 ] ) ) . done ) return t ;
7191 if ( y = 0 , t ) op = [ op [ 0 ] & 2 , t . value ] ;
7292 switch ( op [ 0 ] ) {
@@ -89,47 +109,63 @@ function __generator(thisArg, body) {
89109}
90110
91111var loadedScripts = { } ;
92- var src = 'https://checkout.flutterwave.com/v3.js' ;
112+ var srcUrl = 'https://checkout.flutterwave.com/v3.js' ;
113+ var maxAttempts = 3 ; // Set the maximum number of attempts
114+ var attempt = 1 ; // Track the attempt count
93115function useFWScript ( ) {
94- var _a = React . useState ( {
116+ var _a = React__namespace . useState ( {
95117 loaded : false ,
96118 error : false ,
97119 } ) , state = _a [ 0 ] , setState = _a [ 1 ] ;
98- React . useEffect ( function ( ) {
99- if ( loadedScripts . hasOwnProperty ( src ) ) {
120+ React__namespace . useEffect ( function ( ) {
121+ if ( loadedScripts . hasOwnProperty ( ' src' ) ) {
100122 setState ( {
101123 loaded : true ,
102124 error : false ,
103125 } ) ;
104126 }
105127 else {
106- loadedScripts . src = src ;
107- var script_1 = document . createElement ( 'script' ) ;
108- script_1 . src = src ;
109- script_1 . async = true ;
110- var onScriptLoad_1 = function ( ) {
111- setState ( {
112- loaded : true ,
113- error : false ,
114- } ) ;
115- } ;
116- var onScriptError_1 = function ( ) {
117- delete loadedScripts . src ;
118- setState ( {
119- loaded : true ,
120- error : true ,
121- } ) ;
122- } ;
123- script_1 . addEventListener ( 'load' , onScriptLoad_1 ) ;
124- script_1 . addEventListener ( 'complete' , onScriptLoad_1 ) ;
125- script_1 . addEventListener ( 'error' , onScriptError_1 ) ;
126- document . body . appendChild ( script_1 ) ;
128+ downloadScript ( ) ;
127129 return function ( ) {
128- script_1 . removeEventListener ( 'load' , onScriptLoad_1 ) ;
129- script_1 . removeEventListener ( 'error' , onScriptError_1 ) ;
130+ var scripts = document . querySelectorAll ( 'script' ) ;
131+ scripts . forEach ( function ( script ) {
132+ if ( script . src === srcUrl ) {
133+ script . removeEventListener ( 'load' , onScriptLoad ) ;
134+ script . removeEventListener ( 'error' , onScriptError ) ;
135+ }
136+ } ) ;
130137 } ;
131138 }
132139 } , [ ] ) ;
140+ var downloadScript = React__namespace . useCallback ( function ( ) {
141+ loadedScripts . src = srcUrl ;
142+ var script = document . createElement ( 'script' ) ;
143+ script . src = srcUrl ;
144+ script . async = true ;
145+ script . addEventListener ( 'load' , onScriptLoad ) ;
146+ script . addEventListener ( 'error' , onScriptError ) ;
147+ document . body . appendChild ( script ) ;
148+ } , [ ] ) ;
149+ var onScriptLoad = React__namespace . useCallback ( function ( ) {
150+ setState ( {
151+ loaded : true ,
152+ error : false ,
153+ } ) ;
154+ } , [ ] ) ;
155+ var onScriptError = React__namespace . useCallback ( function ( ) {
156+ delete loadedScripts . src ;
157+ console . log ( "Flutterwave script download failed. Attempt: " + attempt ) ;
158+ if ( attempt < maxAttempts ) {
159+ ++ attempt ;
160+ setTimeout ( function ( ) { return downloadScript ( ) ; } , ( attempt * 1000 ) ) ; // Progressively increase the delay before retry
161+ }
162+ else {
163+ setState ( {
164+ loaded : true ,
165+ error : true ,
166+ } ) ;
167+ }
168+ } , [ ] ) ;
133169 return [ state . loaded , state . error ] ;
134170}
135171
@@ -140,7 +176,7 @@ function useFWScript() {
140176 */
141177function useFlutterwave ( flutterWaveConfig ) {
142178 var _a = useFWScript ( ) , loaded = _a [ 0 ] , error = _a [ 1 ] ;
143- React . useEffect ( function ( ) {
179+ React__namespace . useEffect ( function ( ) {
144180 if ( error )
145181 throw new Error ( 'Unable to load flutterwave payment modal' ) ;
146182 } , [ error ] ) ;
@@ -213,7 +249,7 @@ function useFlutterwave(flutterWaveConfig) {
213249var FlutterWaveButton = function ( _a ) {
214250 var text = _a . text , className = _a . className , children = _a . children , callback = _a . callback , onClose = _a . onClose , disabled = _a . disabled , config = __rest ( _a , [ "text" , "className" , "children" , "callback" , "onClose" , "disabled" ] ) ;
215251 var handleFlutterwavePayment = useFlutterwave ( config ) ;
216- return ( React . createElement ( "button" , { disabled : disabled , className : className , onClick : function ( ) { return handleFlutterwavePayment ( { callback : callback , onClose : onClose } ) ; } } , text || children ) ) ;
252+ return ( React__namespace . createElement ( "button" , { disabled : disabled , className : className , onClick : function ( ) { return handleFlutterwavePayment ( { callback : callback , onClose : onClose } ) ; } } , text || children ) ) ;
217253} ;
218254
219255/**
0 commit comments