Skip to content

Commit 540427c

Browse files
committed
feat(checkout): Surface instructions to fix an invalid passport provider parameter
1 parent f958da9 commit 540427c

File tree

3 files changed

+33
-9
lines changed

3 files changed

+33
-9
lines changed

packages/checkout/widgets-lib/src/components/UnableToConnectDrawer/UnableToConnectDrawer.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,14 @@ export interface UnableToConnectDrawerProps {
1717
checkout: Checkout;
1818
onCloseDrawer: () => void;
1919
onTryAgain?: () => void;
20+
message?: string;
2021
}
2122
export function UnableToConnectDrawer({
2223
visible,
2324
checkout,
2425
onCloseDrawer,
2526
onTryAgain,
27+
message,
2628
}: UnableToConnectDrawerProps) {
2729
const { t } = useTranslation();
2830

@@ -102,7 +104,7 @@ export function UnableToConnectDrawer({
102104
paddingX: 'base.spacing.x6',
103105
}}
104106
>
105-
{t('drawers.walletConnectionError.unableToConnect.body')}
107+
{message ?? t('drawers.walletConnectionError.unableToConnect.body')}
106108
</Body>
107109
</Box>
108110
</Box>

packages/checkout/widgets-lib/src/locales/en.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1218,6 +1218,11 @@
12181218
"body": "Check your wallet and try again, or close and try a different option",
12191219
"actionButtonText": "Try again"
12201220
},
1221+
"passportProviderError": {
1222+
"heading": "Unable to connect",
1223+
"body": "Have you called `await passport.connectEvm()` to initialize the passport provider?",
1224+
"actionButtonText": "Try again"
1225+
},
12211226
"changedYourMind": {
12221227
"heading": "Changed your mind?",
12231228
"body": "Make sure pop ups are enabled and follow the prompts in your wallet to connect",

packages/checkout/widgets-lib/src/widgets/connect/components/WalletList.tsx

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
} from 'react';
1919
import { motion } from 'framer-motion';
2020
import { useTranslation } from 'react-i18next';
21+
import { isError } from 'ethers';
2122
import { UnableToConnectDrawer } from '../../../components/UnableToConnectDrawer/UnableToConnectDrawer';
2223
import { ChangedYourMindDrawer } from '../../../components/ChangedYourMindDrawer/ChangedYourMindDrawer';
2324
import { ConnectWidgetViews } from '../../../context/view-context/ConnectViewContextTypes';
@@ -79,7 +80,10 @@ export function WalletList(props: WalletListProps) {
7980
const { isWalletConnectEnabled, openWalletConnectModal } = useWalletConnect();
8081
const walletConnectItemRef = useRef(null);
8182
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+
});
8387
const [showNonPassportWarning, setShowNonPassportWarning] = useState(false);
8488
const [chosenProviderDetail, setChosenProviderDetail] = useState<EIP6963ProviderDetail>();
8589

@@ -200,14 +204,22 @@ export function WalletList(props: WalletListProps) {
200204
// eslint-disable-next-line no-console
201205
console.error('Connect error', err);
202206

203-
setShowUnableToConnectDrawer(true);
207+
setUnableToConnectDrawerState({ visible: true, message: undefined });
204208
}
205209
}
206210
} 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+
}
207220
// eslint-disable-next-line no-console
208221
console.error('Connect unknown error', err);
209-
210-
setShowUnableToConnectDrawer(true);
222+
setUnableToConnectDrawerState({ visible: true, message: undefined });
211223
}
212224
},
213225
[checkout],
@@ -288,7 +300,7 @@ export function WalletList(props: WalletListProps) {
288300
}
289301

290302
setShowChangedYourMindDrawer(false);
291-
setShowUnableToConnectDrawer(false);
303+
setUnableToConnectDrawerState({ visible: false, message: undefined });
292304
setChosenProviderDetail(providerDetail);
293305
track({
294306
userJourney: UserJourney.CONNECT,
@@ -444,10 +456,15 @@ export function WalletList(props: WalletListProps) {
444456
/>
445457

446458
<UnableToConnectDrawer
447-
visible={showUnableToConnectDrawer}
459+
visible={unableToConnectDrawerState.visible}
448460
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}
451468
/>
452469

453470
<NonPassportWarningDrawer

0 commit comments

Comments
 (0)