@enjin-io/metamask-enjin-adapter
Version:
103 lines • 6.88 kB
JavaScript
;
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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