diff --git a/.yarn/versions/b7deac07.yml b/.yarn/versions/b7deac07.yml new file mode 100644 index 000000000..2bce12059 --- /dev/null +++ b/.yarn/versions/b7deac07.yml @@ -0,0 +1,6 @@ +releases: + browser-extension: patch + helios-inpage: patch + +declined: + - helios diff --git a/packages/inpage/setup-inpage-provider.js b/packages/inpage/setup-inpage-provider.js index 078831833..4c7b603f1 100644 --- a/packages/inpage/setup-inpage-provider.js +++ b/packages/inpage/setup-inpage-provider.js @@ -1,6 +1,5 @@ import {rpcStream} from '@fluent-wallet/extension-runtime/rpc-stream.js' import {initProvider} from '@fluent-wallet/provider-api' -import {takeOver} from './take-over-portal' import {announceProvider} from './eip-6963' import {v4 as uuid} from 'uuid' @@ -94,16 +93,17 @@ function setupProvider() { }) window.fluent = PROVIDER - if (!window.ethereum) window.ethereum = PROVIDER Object.defineProperty(window, 'conflux', {value: PROVIDER, writable: false}) - takeOver(PROVIDER, 'cfx') - if (window.localStorage.getItem(FLUENT_OVERRIDE_WINDOW_DOT_ETHEREUM)) { + if ( + !window.ethereum || + window.localStorage.getItem(FLUENT_OVERRIDE_WINDOW_DOT_ETHEREUM) + ) { try { Object.defineProperty(window, 'ethereum', { value: PROVIDER, writable: false, + configurable: false, }) - takeOver(PROVIDER, 'eth') } catch (error) { console.log('Failed to override window.ethereum', error) } diff --git a/packages/inpage/setup-inpage-provider.test.js b/packages/inpage/setup-inpage-provider.test.js index 68ea03a8e..c2c617d9f 100644 --- a/packages/inpage/setup-inpage-provider.test.js +++ b/packages/inpage/setup-inpage-provider.test.js @@ -1,5 +1,10 @@ -import {expect, describe, it, vi} from 'vitest' +import {expect, describe, it, vi, beforeEach} from 'vitest' import {EIP6963EventNames} from './eip-6963.js' + +beforeEach(async () => { + window.ethereum = 1 +}) + describe('inpage', () => { describe('setupProvider', () => { it('should setup the provider on window.conflux', async () => { @@ -16,9 +21,9 @@ describe('inpage', () => { expect(eventNames[1]).toBe(EIP6963EventNames.Request) expect(window.conflux).toBeDefined() }) - + }) + describe('setupProvider', () => { it('should not setup the provider on window.ethereum when already defined', async () => { - window.ethereum = 1 expect(window.ethereum).toBe(1) await import('./index.js') expect(window.ethereum).toBe(1)