diff --git a/src/wallet/WalletLoginModal.tsx b/src/wallet/WalletLoginModal.tsx
index 681eb42..a0faaed 100644
--- a/src/wallet/WalletLoginModal.tsx
+++ b/src/wallet/WalletLoginModal.tsx
@@ -146,6 +146,18 @@ export function WalletLoginModal() {
.finally(() => setState("idle"));
};
+ // Desktop: open the RainbowKit modal — it discovers every installed wallet
+ // via EIP-6963 (robust when several extensions fight over window.ethereum)
+ // and also offers a WalletConnect QR. Fall back to the raw injected flow only
+ // when WalletConnect has no project id configured.
+ const connectBrowserWallet = () => {
+ if (wc.available) {
+ wc.start();
+ return;
+ }
+ void signInjected();
+ };
+
const openApp = (kind: WalletKind) => {
setError("");
setOpeningWallet(kind);
@@ -201,27 +213,30 @@ export function WalletLoginModal() {
- {/* Injected wallet: browser extension (desktop) or in-wallet browser. */}
- {hasInjected ? (
+ {/* Browser wallet: in a wallet's in-app browser we sign directly with
+ the injected provider; on desktop we open the RainbowKit picker so
+ the user can choose among installed extensions reliably. */}
+ {mobileDevice && hasInjected ? (
) : !mobileDevice ? (
) : null}