@subwallet-connect/torus
Version:
Torus SDK wallet module for connecting to Web3-Onboard. Web3-Onboard makes it simple to connect Ethereum hardware and software wallets to your dapp. Features standardized spec compliant web3 providers for all supported wallets, framework agnostic modern j
71 lines (70 loc) • 3.07 kB
JavaScript
function torus(options) {
const { buttonPosition, modalZIndex, apiKey, buildEnv, enableLogging, loginConfig, showTorusButton, integrity, whiteLabel } = options || {};
return () => {
return {
label: 'Torus',
type: 'evm',
getIcon: async () => (await import('./icon.js')).default,
getInterface: async ({ chains }) => {
const { default: Torus } = await import('@toruslabs/torus-embed');
const { createEIP1193Provider, ProviderRpcErrorCode, ProviderRpcError } = await import('@subwallet-connect/common');
const [chain] = chains;
let instance = new Torus({
buttonPosition,
modalZIndex,
apiKey
});
await instance.init({
buildEnv,
enableLogging,
network: {
host: chain.rpcUrl || '',
chainId: parseInt(chain.id),
networkName: chain.label
},
showTorusButton: showTorusButton,
loginConfig,
integrity,
whiteLabel
});
const torusProvider = instance.provider;
const provider = createEIP1193Provider(torusProvider, {
eth_requestAccounts: async () => {
try {
const accounts = await instance.login();
return accounts;
}
catch (error) {
throw new ProviderRpcError({
code: ProviderRpcErrorCode.ACCOUNT_ACCESS_REJECTED,
message: 'Account access rejected'
});
}
},
eth_selectAccounts: null,
wallet_switchEthereumChain: async ({ params }) => {
const chain = chains.find(({ id }) => id === params[0].chainId);
if (!chain)
throw new Error('chain must be set before switching');
await instance.setProvider({
host: chain.rpcUrl || '',
chainId: parseInt(chain.id),
networkName: chain.label
});
return null;
},
eth_chainId: async ({ baseRequest }) => {
const chainId = await baseRequest({ method: 'eth_chainId' });
return `0x${parseInt(chainId).toString(16)}`;
}
});
provider.disconnect = () => instance.cleanUp();
return {
provider,
instance
};
}
};
};
}
export default torus;