2
2
TransactionRequest ,
3
3
TransactionResponse ,
4
4
} from '@ethersproject/providers' ;
5
+ import { Environment } from '@flair-sdk/common' ;
5
6
import axios from 'axios' ;
6
7
import { BigNumber , BigNumberish , constants , ethers , Signer } from 'ethers' ;
7
8
import { Deferrable } from 'ethers/lib/utils' ;
@@ -139,7 +140,7 @@ export class BalanceRampClient {
139
140
...balanceRamp . settlementRelayMetaTx ?. txReceipt ,
140
141
} as any ) ,
141
142
gasLimit : BigNumber . from (
142
- balanceRamp ?. settlementRelayMetaTx ?. txReceipt ?. gasUsed ,
143
+ balanceRamp ?. settlementRelayMetaTx ?. txReceipt ?. gasUsed || 0 ,
143
144
) ,
144
145
} ;
145
146
}
@@ -513,12 +514,6 @@ export class BalanceRampClient {
513
514
estimatedGasLimit : requiredBalance . estimatedGasLimit ?. toString ( ) || '' ,
514
515
} ;
515
516
516
- // const modal = openModalWithData(
517
- // {
518
- // url: `${BALANCE_RAMP_BACKEND[this.config.env].startSession}`,
519
- // },
520
- // rampRequest
521
- // );
522
517
const url = `${ BALANCE_RAMP_BACKEND [ this . config . env ] . startSession } ` ;
523
518
this . iframe . src = url ;
524
519
this . show ( ) ;
@@ -533,35 +528,32 @@ export class BalanceRampClient {
533
528
'*' ,
534
529
) ;
535
530
} , 500 ) ;
536
- setTimeout ( ( ) => {
537
- clearInterval ( intervalRequest ) ;
538
- } , 10000 ) ;
539
-
540
- // periodically check if modal is closed
541
- // const interval = setInterval(() => {
542
- // if (modal?.closed) {
543
- // window.postMessage(
544
- // {
545
- // flair: true,
546
- // type: "WindowClosed",
547
- // },
548
- // "*"
549
- // );
550
- // clearInterval(interval);
551
- // }
552
- // }, 3000);
531
+
532
+ const handleInitialized = ( event : any ) => {
533
+ if (
534
+ event ?. data ?. flair &&
535
+ event ?. data ?. type === 'BalanceRampInitialized'
536
+ ) {
537
+ clearInterval ( intervalRequest ) ;
538
+ window . removeEventListener ( 'message' , handleInitialized ) ;
539
+ }
540
+ } ;
541
+ window . addEventListener ( 'message' , handleInitialized ) ;
553
542
}
554
543
555
544
hide ( ) {
556
545
this . modalOverlay . style . opacity = '0' ;
557
546
setTimeout ( ( ) => {
558
547
this . modalOverlay . style . display = 'none' ;
559
548
} , 300 ) ;
549
+ this . iframe . src = 'about:blank' ;
560
550
}
561
551
562
552
show ( ) {
563
553
this . modalOverlay . style . display = 'block' ;
564
- this . modalOverlay . style . opacity = '1' ;
554
+ setTimeout ( ( ) => {
555
+ this . modalOverlay . style . opacity = '1' ;
556
+ } , 10 ) ;
565
557
}
566
558
567
559
private injectModal ( ) {
@@ -635,7 +627,7 @@ export class BalanceRampClient {
635
627
}
636
628
637
629
switch ( event . data . type ) {
638
- case 'BalanceRampCanceled ' :
630
+ case 'BalanceRampCancelled ' :
639
631
case 'BalanceRampFailure' :
640
632
this . hide ( ) ;
641
633
break ;
@@ -686,8 +678,10 @@ export class BalanceRampClient {
686
678
reject ( 'Payment was cancelled by user.' ) ;
687
679
} else if ( message . type === 'BalanceRampFailure' ) {
688
680
reject ( message . data ) ;
681
+ } else if ( message . type === 'BalanceRampInitialized' ) {
682
+ // ignore
689
683
} else {
690
- reject ( 'Unknown message type: ' + event . data ) ;
684
+ reject ( 'Unknown message type: ' + event ? .data ?. type ) ;
691
685
}
692
686
} catch ( e ) {
693
687
console . error ( 'Failed to parse message: ' , e ) ;
0 commit comments