@sky-mavis/tanto-connect
Version:
Tanto Connect
65 lines (61 loc) • 1.93 kB
JavaScript
'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;