Skip to content

Commit ae0f5fa

Browse files
committed
fix: handle non-configurable window.ethereum in wallet selection script
1 parent 5ba715f commit ae0f5fa

File tree

1 file changed

+25
-18
lines changed

1 file changed

+25
-18
lines changed

libs/remix-ui/quick-dapp-v2/src/lib/utils/wallet-selection-script.ts

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -264,24 +264,31 @@ export function generateWalletSelectionScript(): string {
264264
// their provider but keep our Proxy in control until the user selects a wallet.
265265
var _proxyProvider = getProviderOrProxy();
266266
267-
Object.defineProperty(window, 'ethereum', {
268-
get: function() {
269-
if (_resolved && _selectedProvider) return _selectedProvider;
270-
return _proxyProvider;
271-
},
272-
set: function(val) {
273-
if (val && !val._isQuickDappProxy) {
274-
// Capture the provider from wallet extensions as legacy fallback
275-
window.__qdapp_legacy_ethereum = val;
276-
}
277-
if (_resolved) {
278-
// After wallet selection, allow reassignment
279-
_selectedProvider = val;
280-
}
281-
},
282-
configurable: true,
283-
enumerable: true
284-
});
267+
try {
268+
Object.defineProperty(window, 'ethereum', {
269+
get: function() {
270+
if (_resolved && _selectedProvider) return _selectedProvider;
271+
return _proxyProvider;
272+
},
273+
set: function(val) {
274+
if (val && !val._isQuickDappProxy) {
275+
window.__qdapp_legacy_ethereum = val;
276+
}
277+
if (_resolved) {
278+
_selectedProvider = val;
279+
}
280+
},
281+
configurable: true,
282+
enumerable: true
283+
});
284+
} catch (e) {
285+
// MetaMask (Chrome) may define window.ethereum as non-configurable before us.
286+
// Fall back to using the existing provider directly.
287+
console.warn('[QuickDapp] Cannot override window.ethereum:', e.message);
288+
if (window.ethereum) {
289+
window.__qdapp_legacy_ethereum = window.ethereum;
290+
}
291+
}
285292
286293
console.log('[QuickDapp] Wallet selection script loaded. Detected', _providers.length, 'EIP-6963 providers.');
287294
})();

0 commit comments

Comments
 (0)