UNPKG

@enjin-io/metamask-enjin-adapter

Version:
103 lines 6.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isMetamaskSnapsSupported = exports.isPolkadotSnapInstalled = exports.getMetaMaskEIP6963Provider = exports.getMetaMask = exports.hasSnapsSupport = exports.hasMetaMask = void 0; function hasMetaMask() { if (!window.ethereum) { return false; } return window.ethereum.isMetaMask; } exports.hasMetaMask = hasMetaMask; async function hasSnapsSupport(provider = window.ethereum) { try { if (provider.isMetaMask && !provider.isPhantom) { await provider.request({ method: 'wallet_getSnaps' }); return true; } return false; } catch { return false; } } exports.hasSnapsSupport = hasSnapsSupport; async function getMetaMask() { if (typeof window === 'undefined') { return null; } if (await hasSnapsSupport()) { return window.ethereum; } if (window.ethereum?.detected) { for (const provider of window.ethereum.detected) { if (await hasSnapsSupport(provider)) { return provider; } } } if (window.ethereum?.providers) { for (const provider of window.ethereum.providers) { if (await hasSnapsSupport(provider)) { return provider; } } } const eip6963Provider = await getMetaMaskEIP6963Provider(); if (eip6963Provider && (await hasSnapsSupport(eip6963Provider))) { return eip6963Provider; } return null; } exports.getMetaMask = getMetaMask; function getMetaMaskEIP6963Provider() { return new Promise((resolve, reject) => { let isResolved = false; const handleAnnounce = (event) => { if (event.detail.provider.isMetaMask && !event.detail.provider.isPhantom) { resolve(event.detail.provider); isResolved = true; } }; window.addEventListener('eip6963:announceProvider', handleAnnounce); window.dispatchEvent(new Event('eip6963:requestProvider')); setTimeout(() => { window.removeEventListener('eip6963:announceProvider', handleAnnounce); if (!isResolved) { reject(new Error('MetaMask provider not found')); } }, 1000); }); } exports.getMetaMaskEIP6963Provider = getMetaMaskEIP6963Provider; async function isPolkadotSnapInstalled(snapOrigin, version) { try { const walletSnaps = await getWalletSnaps(); if (!walletSnaps) return false; return !!Object.values(walletSnaps).find((permission) => permission.id === snapOrigin && (!version || permission.version === version)); } catch (e) { console.error('Failed to obtain installed snaps', e); return false; } } exports.isPolkadotSnapInstalled = isPolkadotSnapInstalled; async function getWalletSnaps() { const metamask = await getMetaMask(); return await metamask?.request({ method: 'wallet_getSnaps' }); } async function isMetamaskSnapsSupported() { try { await getWalletSnaps(); return true; } catch (e) { return false; } } exports.isMetamaskSnapsSupported = isMetamaskSnapsSupported; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsU0FBZ0IsV0FBVztJQUN6QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNwQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBRUQsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztBQUNwQyxDQUFDO0FBTkQsa0NBTUM7QUFFTSxLQUFLLFVBQVUsZUFBZSxDQUNuQyxXQUE0QixNQUFNLENBQUMsUUFBUTtJQUUzQyxJQUFJO1FBQ0YsSUFBSSxRQUFRLENBQUMsVUFBVSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRTtZQUM5QyxNQUFNLFFBQVEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3JCLE1BQU0sRUFBRSxpQkFBaUI7YUFDMUIsQ0FBQyxDQUFDO1lBRUgsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUVELE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFBQyxNQUFNO1FBQ04sT0FBTyxLQUFLLENBQUM7S0FDZDtBQUNILENBQUM7QUFoQkQsMENBZ0JDO0FBRU0sS0FBSyxVQUFVLFdBQVc7SUFDL0IsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLEVBQUU7UUFDakMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELElBQUksTUFBTSxlQUFlLEVBQUUsRUFBRTtRQUMzQixPQUFPLE1BQU0sQ0FBQyxRQUFRLENBQUM7S0FDeEI7SUFFRCxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFO1FBQzdCLEtBQUssTUFBTSxRQUFRLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7WUFDL0MsSUFBSSxNQUFNLGVBQWUsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDbkMsT0FBTyxRQUFRLENBQUM7YUFDakI7U0FDRjtLQUNGO0lBRUQsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRTtR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