diff --git a/packages/extension/src/inpage/alephiumWindowObject.ts b/packages/extension/src/inpage/alephiumWindowObject.ts index 20a33fa1..3c0a38d3 100644 --- a/packages/extension/src/inpage/alephiumWindowObject.ts +++ b/packages/extension/src/inpage/alephiumWindowObject.ts @@ -116,12 +116,6 @@ export const alephiumWindowObject: AlephiumWindowObject = throw Error("User aborted") } - const { alephiumProviders } = window - const alephium = alephiumProviders?.alephium - if (!alephium) { - throw Error("No alephium object detected") - } - const account = { address: walletAccount.address, publicKey: walletAccount.signer.publicKey, diff --git a/packages/extension/src/inpage/index.ts b/packages/extension/src/inpage/index.ts index b6b76c8d..a3cb8e7b 100644 --- a/packages/extension/src/inpage/index.ts +++ b/packages/extension/src/inpage/index.ts @@ -52,7 +52,17 @@ function attachNostrProvider() { } } +function announceProvider() { + const event = new CustomEvent('announceAlephiumProvider', { + detail: Object.freeze({ provider: alephiumWindowObject }) + }) + const handler = () => window.dispatchEvent(event) + handler() + window.addEventListener('requestAlephiumProvider', handler) +} + function attach() { + announceProvider() attachAlephiumProvider() attachNostrProvider() } @@ -62,15 +72,8 @@ attach() window.addEventListener( "message", async ({ data }: MessageEvent) => { - const { alephiumProviders } = window - const alephium = alephiumProviders?.alephium - - if (!alephium) { - return - } - if (data.type === "ALPH_DISCONNECT_ACCOUNT") { - await alephium.disconnect() + await alephiumWindowObject.disconnect() } }, ) diff --git a/packages/extension/src/inpage/inpage.model.ts b/packages/extension/src/inpage/inpage.model.ts index e056b225..2854ad7c 100644 --- a/packages/extension/src/inpage/inpage.model.ts +++ b/packages/extension/src/inpage/inpage.model.ts @@ -43,6 +43,11 @@ declare global { alephiumProviders?: Record nostr?: NostrObject } + + interface WindowEventMap { + 'announceAlephiumProvider': CustomEvent, + 'requestAlephiumProvider': Event + } } export interface NostrObject {