@@ -18,6 +18,7 @@ import {
18
18
} from 'react' ;
19
19
import { motion } from 'framer-motion' ;
20
20
import { useTranslation } from 'react-i18next' ;
21
+ import { isError } from 'ethers' ;
21
22
import { UnableToConnectDrawer } from '../../../components/UnableToConnectDrawer/UnableToConnectDrawer' ;
22
23
import { ChangedYourMindDrawer } from '../../../components/ChangedYourMindDrawer/ChangedYourMindDrawer' ;
23
24
import { ConnectWidgetViews } from '../../../context/view-context/ConnectViewContextTypes' ;
@@ -79,7 +80,10 @@ export function WalletList(props: WalletListProps) {
79
80
const { isWalletConnectEnabled, openWalletConnectModal } = useWalletConnect ( ) ;
80
81
const walletConnectItemRef = useRef ( null ) ;
81
82
const [ showChangedYourMindDrawer , setShowChangedYourMindDrawer ] = useState ( false ) ;
82
- const [ showUnableToConnectDrawer , setShowUnableToConnectDrawer ] = useState ( false ) ;
83
+ const [ unableToConnectDrawerState , setUnableToConnectDrawerState ] = useState ( {
84
+ visible : false ,
85
+ message : undefined as string | undefined ,
86
+ } ) ;
83
87
const [ showNonPassportWarning , setShowNonPassportWarning ] = useState ( false ) ;
84
88
const [ chosenProviderDetail , setChosenProviderDetail ] = useState < EIP6963ProviderDetail > ( ) ;
85
89
@@ -200,14 +204,22 @@ export function WalletList(props: WalletListProps) {
200
204
// eslint-disable-next-line no-console
201
205
console . error ( 'Connect error' , err ) ;
202
206
203
- setShowUnableToConnectDrawer ( true ) ;
207
+ setUnableToConnectDrawerState ( { visible : true , message : undefined } ) ;
204
208
}
205
209
}
206
210
} catch ( err : any ) {
211
+ if (
212
+ isError ( err , 'INVALID_ARGUMENT' )
213
+ && err . message . includes ( 'value={ "ethereumProvider": { "isPassport": true } }' ) ) {
214
+ setUnableToConnectDrawerState ( {
215
+ visible : true ,
216
+ message : t ( 'drawers.walletConnectionError.passportProviderError.body' ) ,
217
+ } ) ;
218
+ return ;
219
+ }
207
220
// eslint-disable-next-line no-console
208
221
console . error ( 'Connect unknown error' , err ) ;
209
-
210
- setShowUnableToConnectDrawer ( true ) ;
222
+ setUnableToConnectDrawerState ( { visible : true , message : undefined } ) ;
211
223
}
212
224
} ,
213
225
[ checkout ] ,
@@ -288,7 +300,7 @@ export function WalletList(props: WalletListProps) {
288
300
}
289
301
290
302
setShowChangedYourMindDrawer ( false ) ;
291
- setShowUnableToConnectDrawer ( false ) ;
303
+ setUnableToConnectDrawerState ( { visible : false , message : undefined } ) ;
292
304
setChosenProviderDetail ( providerDetail ) ;
293
305
track ( {
294
306
userJourney : UserJourney . CONNECT ,
@@ -444,10 +456,15 @@ export function WalletList(props: WalletListProps) {
444
456
/>
445
457
446
458
< UnableToConnectDrawer
447
- visible = { showUnableToConnectDrawer }
459
+ visible = { unableToConnectDrawerState . visible }
448
460
checkout = { checkout ! }
449
- onCloseDrawer = { ( ) => setShowUnableToConnectDrawer ( false ) }
450
- onTryAgain = { ( ) => setShowUnableToConnectDrawer ( false ) }
461
+ onCloseDrawer = { ( ) => {
462
+ setUnableToConnectDrawerState ( { visible : false , message : undefined } ) ;
463
+ } }
464
+ onTryAgain = { ( ) => {
465
+ setUnableToConnectDrawerState ( { visible : false , message : undefined } ) ;
466
+ } }
467
+ message = { unableToConnectDrawerState . message }
451
468
/>
452
469
453
470
< NonPassportWarningDrawer
0 commit comments