UNPKG

@sky-mavis/tanto-connect

Version:
65 lines (61 loc) 1.93 kB
'use strict'; var storage = require('../../common/storage.cjs'); var connectorEvent = require('../../types/connector-event.cjs'); class BaseConnector extends connectorEvent.ConnectorEventEmitter { id; name; type; icon; isRonin; provider; constructor(configs, provider) { const { id, name, icon, type } = configs; super(); this.id = id; this.name = name; this.icon = icon; this.type = type; this.isRonin = false; this.provider = provider; } getProvider = async () => { if (!this.provider) { this.provider = await this.requestProvider(); } return this.provider; }; getProviderSync = () => { return this.provider; }; autoConnect = async () => { try { const isConnectable = await this.shouldAutoReconnect(); return isConnectable ? await this.connect() : null; } catch (error) { console.error('Failed to auto-connect:', error); return null; } }; shouldAutoReconnect = async () => { const isReconnect = storage.ReconnectStorage.get(this.id); const isAuthorized = await this.isAuthorized(); return isReconnect && isAuthorized; }; onChainChanged = (chainId) => { this.emit(connectorEvent.ConnectorEvent.CHAIN_CHANGED, Number(chainId)); }; onAccountsChanged = (accounts) => { if (accounts.length === 0) { this.onDisconnect(); } this.emit(connectorEvent.ConnectorEvent.ACCOUNTS_CHANGED, accounts); }; onConnect = (result) => { this.emit(connectorEvent.ConnectorEvent.CONNECT, result); }; onDisconnect = () => { this.emit(connectorEvent.ConnectorEvent.DISCONNECT); }; } exports.BaseConnector = BaseConnector;