@thirdweb-dev/wallets
Version:
<p align="center"> <br /> <a href="https://thirdweb.com"><img src="https://github.com/thirdweb-dev/js/blob/main/legacy_packages/sdk/logo.svg?raw=true" width="200" alt=""/></a> <br /> </p> <h1 align="center">thirdweb Wallet SDK</h1> <p align="center"> <a h
94 lines (89 loc) • 2.66 kB
JavaScript
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var defineProperty = require('../../../../dist/defineProperty-9051a5d3.cjs.dev.js');
var normalizeChainId = require('../../../../dist/normalizeChainId-5da85f42.cjs.dev.js');
var connector = require('../../../../dist/connector-a63dd9e7.cjs.dev.js');
var sdk = require('@thirdweb-dev/sdk');
require('eventemitter3');
class SignerConnector extends connector.Connector {
constructor(options) {
super();
defineProperty._defineProperty(this, "onChainChanged", chainId => {
const id = normalizeChainId.normalizeChainId(chainId);
const unsupported = !this.options.chains.find(c => c.chainId === id);
this.emit("change", {
chain: {
id,
unsupported
}
});
});
this.options = options;
}
async connect(args) {
if (args.chainId) {
this.switchChain(args.chainId);
}
const signer = await this.getSigner();
const address = await signer.getAddress();
return address;
}
async disconnect() {
this._provider = undefined;
this._signer = undefined;
}
async getAddress() {
const signer = await this.getSigner();
if (!signer) {
throw new Error("No signer found");
}
return await signer.getAddress();
}
async isConnected() {
try {
const addr = await this.getAddress();
return !!addr;
} catch {
return false;
}
}
async getProvider() {
if (!this._provider) {
this._provider = sdk.getChainProvider(this.options.chain, {
clientId: this.options.clientId,
secretKey: this.options.secretKey
});
}
return this._provider;
}
async getSigner() {
if (!this._signer) {
const provider = await this.getProvider();
this._signer = getUpdatedSigner(this.options.signer, provider);
}
return this._signer;
}
async switchChain(chainId) {
const chain = this.options.chains.find(c => c.chainId === chainId);
if (!chain) {
throw new Error(`Chain not found for chainId ${chainId}, please add it to the chains property when creating this wallet`);
}
this._provider = sdk.getChainProvider(chain, {
clientId: this.options.clientId,
secretKey: this.options.secretKey
});
this._signer = getUpdatedSigner(this.options.signer, this._provider);
this.onChainChanged(chainId);
}
async setupListeners() {}
updateChains(chains) {
this.options.chains = chains;
}
}
function getUpdatedSigner(signer, provider) {
if (provider) {
return signer.connect(provider);
}
return signer;
}
exports.SignerConnector = SignerConnector;