@sky-mavis/tanto-wagmi
Version:
124 lines (119 loc) • 5.21 kB
JavaScript
;
var tantoConnect = require('@sky-mavis/tanto-connect');
var core = require('@wagmi/core');
var viem = require('viem');
function roninWallet() {
const connector = new tantoConnect.RoninWalletConnector();
const _connect = async (params) => {
const { chainId } = await connector.connect(params?.chainId);
const accounts = await connector.getAccounts();
return {
accounts: accounts.map(viem.getAddress),
chainId,
};
};
const _getAccounts = async () => {
const accounts = await connector.getAccounts();
return accounts.map(viem.getAddress);
};
return core.createConnector(config => {
const _switchChain = async ({ chainId }) => {
const chain = config.chains.find(chain => chain.id === chainId);
if (!chain)
throw new viem.SwitchChainError(new core.ChainNotConfiguredError());
try {
await connector.switchChain(chainId);
return chain;
}
catch (error) {
throw new viem.SwitchChainError(error);
}
};
const onChainChanged = (chainId) => {
config.emitter.emit('change', { chainId });
};
const onAccountsChanged = (accounts) => {
config.emitter.emit('change', { accounts: accounts.map(viem.getAddress) });
};
const onConnect = async (results) => {
const accounts = await _getAccounts();
config.emitter.emit('connect', { accounts, chainId: results.chainId });
};
const onDisconnect = () => {
config.storage?.removeItem('injected.connected');
config.emitter.emit('disconnect');
};
connector.on(tantoConnect.ConnectorEvent.CONNECT, onConnect);
connector.on(tantoConnect.ConnectorEvent.DISCONNECT, onDisconnect);
connector.on(tantoConnect.ConnectorEvent.ACCOUNTS_CHANGED, onAccountsChanged);
connector.on(tantoConnect.ConnectorEvent.CHAIN_CHANGED, onChainChanged);
return {
icon: connector.icon,
id: connector.id,
name: connector.name,
type: connector.type,
connect: _connect,
getAccounts: _getAccounts,
switchChain: _switchChain,
disconnect: connector.disconnect.bind(connector),
getChainId: connector.getChainId.bind(connector),
getProvider: connector.getProvider.bind(connector),
isAuthorized: connector.isAuthorized.bind(connector),
onAccountsChanged: connector.onAccountsChanged.bind(connector),
onChainChanged: connector.onChainChanged.bind(connector),
onDisconnect: connector.onDisconnect.bind(connector),
};
});
}
function waypoint(params) {
const provider = tantoConnect.requestWaypointProvider(params);
const connector = new tantoConnect.WaypointConnector({ provider });
const _connect = async (params) => {
const { chainId } = await connector.connect(params?.chainId);
const accounts = await connector.getAccounts();
return {
accounts: accounts.map(viem.getAddress),
chainId,
};
};
const _getAccounts = async () => {
const accounts = await connector.getAccounts();
return accounts.map(viem.getAddress);
};
return core.createConnector(config => {
const onChainChanged = (chainId) => {
config.emitter.emit('change', { chainId });
};
const onAccountsChanged = (accounts) => {
config.emitter.emit('change', { accounts: accounts.map(viem.getAddress) });
};
const onConnect = async (results) => {
const accounts = await _getAccounts();
config.emitter.emit('connect', { accounts, chainId: results.chainId });
};
const onDisconnect = () => {
config.emitter.emit('disconnect');
};
connector.on(tantoConnect.ConnectorEvent.CONNECT, onConnect);
connector.on(tantoConnect.ConnectorEvent.DISCONNECT, onDisconnect);
connector.on(tantoConnect.ConnectorEvent.ACCOUNTS_CHANGED, onAccountsChanged);
connector.on(tantoConnect.ConnectorEvent.CHAIN_CHANGED, onChainChanged);
return {
icon: connector.icon,
id: connector.id,
name: connector.name,
type: connector.type,
connect: _connect,
getAccounts: _getAccounts,
disconnect: connector.disconnect.bind(connector),
getChainId: connector.getChainId.bind(connector),
getProvider: connector.getProvider.bind(connector),
isAuthorized: connector.isAuthorized.bind(connector),
onAccountsChanged: connector.onAccountsChanged.bind(connector),
onChainChanged: connector.onChainChanged.bind(connector),
onDisconnect: connector.onDisconnect.bind(connector),
};
});
}
exports.roninWallet = roninWallet;
exports.waypoint = waypoint;