autsequi
Version:
Web3modal's provider layer abstraction for simple implementation of web3 wallet connections
44 lines (37 loc) • 1.21 kB
text/typescript
import { IAbstractConnectorOptions, getChainId } from '../../helpers';
export interface IMewConnectConnectorOptions extends IAbstractConnectorOptions {
infuraId?: string;
rpc?: { [chainId: number]: string };
}
const ConnectToMewConnect = (
MewConnectProvider: any,
opts: IMewConnectConnectorOptions
) => {
return new Promise(async (resolve, reject) => {
let infuraId = '';
let rpc = undefined;
let chainId = 1;
if (opts) {
infuraId = opts.infuraId || '';
rpc = opts.rpc || undefined;
if (opts.infuraId && !rpc) {
rpc = `wss://mainnet.infura.io/ws/v3/${infuraId}`;
}
chainId =
opts.network && getChainId(opts.network) ? getChainId(opts.network) : 1;
}
if (!MewConnectProvider.Provider.isConnected) {
const mewConnect = new MewConnectProvider.Provider();
const provider = mewConnect.makeWeb3Provider(chainId, rpc, true);
mewConnect.on('disconnected', () => {});
try {
const address = await mewConnect.enable();
console.log(address); // todo remove dev item
resolve(provider);
} catch (e) {
reject(e);
}
}
});
};
export default ConnectToMewConnect;